1

导航

docker持续集成和部署

现在是docker系列的最后一篇文章,这里直接实战吧。另外这一篇文章的代码没有测试。看一看就好,就不要实操了
主要是了解一套部署流程,因为实际工作中的流程操作用到的镜像都不是这些

安装代码托管服务gogs

gogs 是一个类似github的代码托管服务, 它简单方便易于使用,我们使用它进行源代码管理.
将本目录下的docker-compose.yml 上传到服务器的 /root/gogs/docker-compose.yml
在服务器的 /root/gogs 中启动服务docker-compose up -d.
访问服务器的 3000 端口并初始化服务.

docker-compose.yml文件内容:

version: '3.3'

services:
    gogs:
      image: gogs/gogs
      restart: always
      volumes:
        # 将 gogs 的数据文件存储在本机
        - "./data/gogs:/data"
      ports:
        - "3000:3000"
      environment:
        - "RUN_CROND=true"
      depends_on:
        - postgres
    postgres:
      image: postgres:9.5
      restart: always
      volumes:
        # 将数据库文件存储到本机,以免丢失
        - "./data/postgresql:/var/lib/postgresql"
      ports:
        - "127.0.0.1:5432:5432"
      environment:
        # 数据库的连接信息
        - "POSTGRES_USER=admin"
        - "POSTGRES_PASSWORD=123456"
        - "POSTGRES_DB=gogs"
打开 <server ip>:3000,会看到如下
gogs配置图片
修改数据库用户为:admin, 用户密码:123456. 数据库主机改为你的服务器ip
点击安装

安装持续集成服务器

drone 是一个轻便简介的持续继承服务器程序。持续继承服务器的功能是我们提交代码后自动拉取,自动运行预先配置好的测试
以确保及发现代码中的bug。在代码测试失败后,我们可以配置通过微信,短信,邮箱等方式接收通知以便于即使修复bug
在代码测试成功后,我们可以配置自动部署到线上生产环境,这个过程叫持续部署
将本目录下的docker-compose.yml 上传到服务器的 /root/drone/docker-compose.yml. 在服务器的 /root/drone 中启动服务docker-compose up -d
由于docker-compose.yml 中配置了gogs, 所以现在可以访问服务器的8000端口并使用gogs的账号登录, 它会在登录后自动同步我们存放在gogs中的项目
文件内容如下:

version: '3'

services:
  server:
    image: drone/drone:0.8.6
    ports:
      - 8000:8000
    volumes:
      - ./data/drone:/var/lib/drone/
    restart: always
    environment:
      # false 表示禁止注册
      - DRONE_OPEN=false
      # DRONE_ADMIN 配置的用户作为管理员
      - DRONE_ADMIN=kuaibiancheng.com
      # 本机主机名
      - DRONE_HOST=http://111.231.98.114
      # 随机输入一个字符串
      - DRONE_SECRET=random_string_123
      # 使用 gogs 服务
      - DRONE_GOGS=true
      # gogs 的地址
      - DRONE_GOGS_URL=http://111.231.98.114:3000
      # gogs 的 git 用户名
      - DRONE_GOGS_GIT_USERNAME=kuaibiancheng.com
      # 密码
      - DRONE_GOGS_GIT_PASSWORD=123
      # 私有模式
      - DRONE_GOGS_PRIVATE_MODE=true
      # 关闭 ssl 验证(我们没有配置 https 访问)
      - DRONE_GOGS_SKIP_VERIFY=true
  agent:
    image: drone/agent:0.8.6
    command: agent
    restart: always
    depends_on:
      - server
    volumes:
      # 这样才可以在容器中使用宿主机的 Docker 服务
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      # secret 和上面的 DRONE_SECRET 配置一致
      - DRONE_SECRET=random_string_123
      # 上面的 server 服务的 9000 端口
      - DRONE_SERVER=server:9000

drone 的使用

首先在drone 的网页中打开对仓库的监听, 点开仓库的详细页面
drone 使用 .drone.yml 文件配置自动测试. 如果drone监听了一个仓库,仓库的根目录下有.drone.yml文件
drone就会使用.drone.yml 文件中定义的步骤测试代码并做一些自定义的操作
自定义的操作包括通知,自动部署等
详见.drone.yml 文件

pipeline:
  run:
    image: python:3.7-alpine3.8
    commands:
      - python3 test.py
  deploy:
    image: appleboy/drone-ssh
    host: 115.159.181.16
    username: ubuntu
    secrets: [ ssh_key ]
    port: 22
    script:
      - cd /home/ubuntu/test
      - git pull
      - sudo sh reload.sh

如果你有其他需求,下面是drone 的文档地址,请自行参阅
http://readme.drone.io/

其他


河畔的风
31 声望2 粉丝

吾乃江东小霸王,一套连招秒脆皮。


下一篇 »
算法思想