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中,详细如下
六、通过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
完成以上操作之后,我们提交到代码到仓库,查看整个构建过程,可以看到部署成功
然后浏览访问test.com,访问成功
以上就是Docker+Gitea+Drone自动化部署Beego。
0条评论