导航

  • docker概念
  • 手动从镜像运行一个容器
  • 应用dockerfile打包镜像
  • 应用compose部署多容器利用
  • 给docker加上数据长久
  • docker在服务器部署
  • docker继续集成和部署

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,会看到如下

批改数据库用户为: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/

其余

  • 插件
  • 让整个构建步骤只在某些分支发生变化的时候执行
  • 让某一步动作在特定条件执行
  • 让 Drone 反对 GitHub