Docker自动化部署Beego

Docker自动化部署Beego

       上一篇介绍了在新服务器上部署了Drone之后,今天又捣鼓了如何自动化部署Beego并通过nginx进行转发,最终捣鼓成功,在这里跟大家分享一下过程,我是通过Gitea仓库关联触发Drone进行自动化构建,所以需要先部署Gitea跟Drone。

       一、准备项目

       我们先在gitea上创建一个仓库,然后本地链接这个仓库,将beego项目放到这个关联目录。

       二、准备挂载目录以及docker-compose

       由于我用到了上传的功能,需要将上传的文件永久存储在服务器,所以需要做一个目录挂载,我直接在服务器用这个目录地址/home/data/go-beego/static/upload当作存储目录,然后在/home/dockerConfig/project/go-beego目录下创建一个docker-compose.yml文件,用来启动我们的beego项目,详细如下

version: "3"
services:
  project_go_beego_compose:
    image: registry.cn-shenzhen.aliyuncs.com/k8s-fblsj/docker-beego-registry
    container_name: docker_go_beego_compose
    volumes:
    - /home/data/go-beego/static/upload:/home/static/upload
    restart: always
    ports:
    - 9090:9090

       三、准备构建镜像文件

       我们在项目根目录创建一个文件名为Dockerfile的文件,用于构建beego镜像,详细如下

# Version 1.0
FROM alpine:latest
# 维护者信息
MAINTAINER hzx790254812@gmail.com
# 设置工作目录
WORKDIR /home
COPY . /home/
# 暴露端口
EXPOSE 9090
# 执行命令
ENTRYPOINT ./project-go-beego

       四、创建构建文件

       根据Drone规则,我们在项目目录下创建一个文件名为.drone.yml的文件,用于构建自动化,详细如下

kind: pipeline
type: docker
name: project-go-beego

#构建步骤
steps:
#构建镜像
- name: build
  image: golang:latest
  pull: if-not-exists
  environment:
    GOPROXY: "https://goproxy.cn,direct"  # 懂的都懂
  volumes:                                # 缓存 go mod & pkg,可以大幅度提高速度,避免每次都下载
    - name: pkgdeps
      path: /go/pkg
  commands:
    - CGO_ENABLED=0 go build -o project-go-beego
#推送镜像至镜像仓库
- name: publish
  image: plugins/docker
  mirrors:       #镜像仓库加速地址,不需要加速,可以直接删除
    from_secret: registry_mirrors
  settings:
    purge: false
    registry:   #镜像仓库域名
      from_secret: registry
    repo:        #镜像仓库详细地址
      from_secret: repo
    use_cache: true
    tags:
      - latest
    username:    #镜像仓库账户
      from_secret: registry_user_name
    password:    #镜像仓库密码
      from_secret: registry_password
    volumes:
      - name: cache
        path: /cache
#部署服务
- name: ssh commands
  image: appleboy/drone-ssh
  settings:
    host:
      from_secret: ssh_ip
    port: 22
    username:
      from_secret: ssh_user_name
    password:
      from_secret: ssh_password
    script:
      - cd /home/dockerConfig/project/go-beego
      - docker-compose pull && docker-compose up --force-recreate -d

       五、设置密钥参数

       在上面的自动化部署文件中,我将一些重要参数都放置在Drone项目管理面板的Secrets中,详细如下

微信截图_20220112142427.png

       六、通过Nginx转发服务

       如果我们想通过域名去访问我们这个服务,就需要通过Nginx去转发我们的服务端口去实现,假设我们想要通过test.com这个域名来访问这个服务,我们可以将这段配置放到Nginx的nginx.conf文件中

server{
   listen 80;
   server_name  test.com;
   location / {
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://127.0.0.1:9090;
   }
   access_log  /usr/local/webserver/nginx/logs/demo.xx.com.log;
}

保存之后,重新加载nginx配置

nginx -s reload

       完成以上操作之后,我们提交到代码到仓库,查看整个构建过程,可以看到部署成功

微信截图_20220112142906.png

然后浏览访问test.com,访问成功

微信截图_20220112142953.png

       以上就是Docker+Gitea+Drone自动化部署Beego。

0条评论

发表评论