使用CI工具在生产中运行dockerized应用程序的最佳方法是什么? 我一直在开发中使用docker-compose,但现在我需要一个工作流进行生产,包括更新服务。
目前,我有一个Versionned文件夹,其中包含应用程序运行所需的所有服务(每个服务位于其自己的子文件夹中,并具有dockerfile)。问题是,例如,如果我更新了我想部署并仅重新启动该服务而不是所有服务的后端。
该应用程序及其服务将仅在一台计算机上运行。不需要副本或多个节点。
任何对解决方案进行深入说明的资源将不胜感激。
谢谢
答案 0 :(得分:0)
我建议使用drone控制您的CI工作流程。
我想您的所有服务都由git repo控制。然后按照GitFlow的指南,为每个服务创建不同的分支。
完成更新后,在service/A
分支上添加一些提交,然后将PR创建到dev
分支。此时,无人机docker plugin将构建您的Docker映像,并将映像推送到Docker注册表。无人机配置示例如下所示:
steps:
- name: build-image
image: plugins/docker
settings:
repo: your-image-repo-on-docker-registry
username:
password:
when:
branch: dev
event: pull_request
- name: deploy-container
image: appleboy/drone-scp
settings:
host: yourserver.com
username: ubuntu
password: ssh_password
port: 22
script:
- docker-compose pull your-image-repo-on-docker-registry
- docker-compose up