部署包含docker-compose.yml的Ansible项目
我想使用部署包含docker-compose.yml的Ansible项目,docker,ansible,ansible-playbook,docker-compose,Docker,Ansible,Ansible Playbook,Docker Compose,我想使用Ansible部署我的一个项目(我们称之为projecttodeploy) 要部署的项目可以使用docker compose.yml文件在本地运行,该文件在docker容器中装载以下卷 version: "2" services: database: image: mysql:5.6 volumes: - ./docker/mysql.init.d:/docker-entrypoint-initdb.d messages: imag
Ansible
部署我的一个项目(我们称之为projecttodeploy
)
要部署的项目可以使用docker compose.yml
文件在本地运行,该文件在docker容器中装载以下卷
version: "2"
services:
database:
image: mysql:5.6
volumes:
- ./docker/mysql.init.d:/docker-entrypoint-initdb.d
messages:
image: private.repo/project-to-deploy:latest
没有比这更有用的了。要运行项目:docker compose up
。
我已经创建了项目的docker映像
(其中我将项目中的所有文件复制到新创建的docker映像
),并将其上载到private.repo/project to deploy:latest
)
现在是最重要的部分
要运行项目,我需要:
码头工人形象
MySQL实例(请参阅下面我的docker compose.yml
的一部分)
在我的docker compose.yml
(上面)中,这样做很容易。我只需创建两个服务(数据库和要部署的项目
),并将它们相互链接
如何在Ansible
中执行此类操作
我做的第一件事是获取图像:
- name: Docker - pull project image
docker:
image: "private.repo/project-to-deploy:latest"
state: restarted
pull: always
那么,我如何将MySQL docker映像链接到这个,知道MySQL docker映像需要项目中的文件来部署
如果你想用另一种方法来做,请随时提出建议 稍加更正,docker
模块用于运行容器,在您的示例中,您不仅仅是获取图像。实际上,您正在提取图像、创建容器并运行它
我通常会通过使用ansible为每个容器的配置文件模板化所需的IP地址、端口、凭据等来实现这一点,为它们提供相互通信所需的所有信息
由于您的示例只涉及很少的连接,您可以在ansible任务中设置链接
选项。您应该只需要在“messages”容器端设置它
- name: Docker - start MySQL container
docker:
name: database
image: "mysql:5.6"
state: restarted
volumes:
- /path/to/docker/mysql.init.d:/docker-entrypoint-initdb.d
pull: always
- name: Docker - start project container
docker:
name: messages
image: "private.repo/project-to-deploy:latest"
state: restarted
pull: always
links:
- database
稍微更正一下,docker
模块用于运行容器,在您的示例中,您不仅仅是获取图像。实际上,您正在提取图像、创建容器并运行它
我通常会通过使用ansible为每个容器的配置文件模板化所需的IP地址、端口、凭据等来实现这一点,为它们提供相互通信所需的所有信息
由于您的示例只涉及很少的连接,您可以在ansible任务中设置链接
选项。您应该只需要在“messages”容器端设置它
- name: Docker - start MySQL container
docker:
name: database
image: "mysql:5.6"
state: restarted
volumes:
- /path/to/docker/mysql.init.d:/docker-entrypoint-initdb.d
pull: always
- name: Docker - start project container
docker:
name: messages
image: "private.repo/project-to-deploy:latest"
state: restarted
pull: always
links:
- database