环境介绍
- 家里用 Docker 部署了个 GitLab + Drone CI
- 腾讯云轻量云,装了Docker + Docker-compose
腾讯云服务器资源较小,主要就承担下内网穿透与博客架设的责任,所以就有现在的条件梳理了一个服务器编排方案。
部署的事其实也简单,但有效的管理便于遇到便宜的服务器,可以更好的迁移,与可以更好的玩一些自建服务。
编排方案
通过 git 项目管理 docker-compose
脚本,并在项目中配置 drone
持续化部署
GitLab 自带的 Web IDE 甚至让我可以直接打开网页开始编排服务后,通过 Drone CI 后就直接完成部署及调整。
# .drone.yml 文件
kind: pipeline
type: docker
name: service-compose
trigger:
event:
- custom
steps:
- name: check
image: alpine
commands:
- if [ -z $service ]; then drone build stop 1; fi
# 将 `service` 文件夹的编排文件上传至服务器
- name: scp
depends_on: [ "check" ]
when:
status:
- success
image: appleboy/drone-scp
settings:
host:
from_secret: SERVER_HOST
port:
from_secret: SERVER_PORT
user:
from_secret: SERVER_USER
key:
from_secret: SERVER_KEY
overwrite: true
strip_components: 1
source: "./${service}"
target: "/app/docker-compose"
# 执行对应 service 服务
- name: compose
depends_on: [ "scp" ]
image: appleboy/drone-ssh
when:
status:
- success
settings:
host:
from_secret: SERVER_HOST
port:
from_secret: SERVER_PORT
username:
from_secret: SERVER_USER
key:
from_secret: SERVER_KEY
script:
- cd "/app/docker-compose/${service}"
- chmod -R 777 "/app/docker-compose/${service}"
- sudo docker-compose down
- if [ -z $down ]; then echo "stop service ${service}"; drone build stop 1; fi
- sudo docker-compose pull;
- sudo docker-compose up -d;
手动触发流程,配置对应的 service
文件夹 Parameters 后。点击Create就开始执行部署啦。