Ich möchte Ansible
verwenden, um eines meiner Projekte bereitzustellen (nennen wir es project-to-deploy
).Stellen Sie Ansible-Projekt bereit, das ein docker-compose.yml enthält
project-to-deploy
kann lokal mit einer docker-compose.yml
Datei ausgeführt werden, die unter anderem folgende Volumes innerhalb der docker-container
mounten.
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
Nichts nützlicher hier. Um das Projekt auszuführen: docker-compose up
. Ich habe eine docker image
des Projekts erstellt (in dem ich alle Dateien aus dem Projekt in die neu erstellte docker image
kopieren), und es auf private.repo/project-to-deploy:latest
hochgeladen.
Jetzt kommt der Ansible Teil.
Für das Projekt auszuführen, ich brauche:
- Das Docker Bild
- Eine MySQL-Instanz
In meinem docker-compose.yml
(oben) (Teil meines docker-compose.yml
siehe unten), ist es durchaus ist leicht zu machen. Ich erstelle nur die 2 Dienste (Datenbank und project-to-deploy
) und verknüpfe sie miteinander.
Wie kann ich eine solche Aktion in Ansible
durchführen?
Erste, was ich tat, ist das Bild zu holen:
- name: Docker - pull project image
docker:
image: "private.repo/project-to-deploy:latest"
state: restarted
pull: always
Dann, wie kann ich verbinden die MySQL Docker Bild dazu, wohl wissend, dass die MySQL-Docker Bild braucht Dateien aus project-to-deploy
?
Wenn Sie an eine andere Möglichkeit denken, zögern Sie nicht, Vorschläge zu machen!