Docker自动化部署Beego

原文来源: 佛布朗斯基  程序员技术笔记

如有侵权,联系删除

准备项目

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

准备编排文件

由于我用到了上传的功能,需要将上传的文件永久存储在服务器,所以需要做一个目录挂载,我直接在服务器用这个目录地址/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.0FROM alpine:latest# 维护者信息MAINTAINER hzx790254812@gmail.com# 设置工作目录WORKDIR /homeCOPY . /home/# 暴露端口EXPOSE 9090# 执行命令ENTRYPOINT ./project-go-beego

创建构建文件

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

kind: pipelinetype: dockername: 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,访问成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值