如今是docker系列的最後一篇文章,這裏直接實戰吧。另外這一篇文章的代碼沒有測試。看一看就好,就不要實操了 主要是瞭解一套部署流程,由於實際工做中的流程操做用到的鏡像都不是這些
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
,會看到以下
修改數據庫用戶爲: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.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