This is an old revision of the document!
În mod clasic, pentru rularea unor containere, este nevoie să rulați comanda aferentă de rulare (docker run) și să dați toți parametrii necesari. Acest proces poate deveni anevoios dacă este repetat pentru pornirea mai multor containere. Un mod de a „salva” configurația de rulare este să ne creăm scripturi. Problema în rularea mai multor scripturi este pierderea uniformității în configurare (ce container la ce rețea se conectează, cu cine comunică, etc.).
Docker Compose este un utilitar creat de către Docker folosit pentru centralizarea configurării de rulare a containerelor în manieră declarativă. Utilizând fișiere de configurare YAML (Yet Another Markup Language), Docker Compose centralizează procesul de configurare într-o manieră naturală, declarativă.
Mai mult decât atât, formatul pentru fișierele Compose este utilizat și în cadrul Docker Swarm, orchestratorul creat de Docker pentru gestiunea serviciilor Docker, despre care vom discuta în laboratorul 3.
Pentru sisteme Windows și MacOS, Docker Compose face parte din instalarea de Docker Desktop for Windows/Mac. Pentru Linux, instalarea se realizează conform ghidului oficial.
Fișierele YAML sunt folosite de obicei pentru a scrie configurări în mod declarativ. Formatul este unul foarte ușor de înțeles și folosit, astfel:
# docker-compose.yml version: "3.8" services: api: build: . # construiește imaginea dintr-un Dockerfile image: nume-imagine-registru:versiune # folosește o imagine din registrul curent environment: NODE_ENV: development VARIABILA_DE_MEDIU: valoare ports: - "5000:80" networks: - network-laborator-2 postgres: image: postgres:12 environment: PGPASSWORD_FILE: /run/secrets/parola-mea-ultra-secreta volumes: - volum-laborator-2:/var/lib/postgresql/data - ./scripturi-initializare/init-db.sql:/docker-entrypoint-init.d/init-db.sql networks: - network-laborator-2 volumes: volum-laborator-2: networks: network-laborator-2: secrets: parola-mea-ultra-secreta: file: './parola-mea-nu-atat-de-secreta.txt'
Descrie ce funcționalități vor fi încărcate la rularea utilitarului Docker Compose.
Descrie serviciile/containerele ce vor rula după ce configurația este pornită de către Compose. Fiecare serviciu reprezintă un container care va avea numele și configurația serviciului. În exemplul de mai sus, containerele se vor numi api și postgres. Cele mai importante proprietăți ale services sunt următoarele:
TODO