docker教程系列七

導航

docker持續集成和部署

如今是docker系列的最後一篇文章,這裏直接實戰吧。另外這一篇文章的代碼沒有測試。看一看就好,就不要實操了
主要是瞭解一套部署流程,由於實際工做中的流程操做用到的鏡像都不是這些

安裝代碼託管服務gogs

gogs 是一個相似github的代碼託管服務, 它簡單方便易於使用,咱們使用它進行源代碼管理.
將本目錄下的docker-compose.yml 上傳到服務器的 /root/gogs/docker-compose.yml
在服務器的 /root/gogs 中啓動服務docker-compose up -d.
訪問服務器的 3000 端口並初始化服務.python

docker-compose.yml文件內容:git

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中的項目
文件內容以下:github

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 文件sql

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/docker

其餘

相關文章
相關標籤/搜索