Com o Docker compose é possível criar vários containers de uma só vez de acordo com as necessidades da sua aplicação, com o compose é possível criar a infraestrutura inteira da sua aplicação com um único arquivo. Isso é possível utilizando um arquivo no formato YAML (docker-compose.yml) indicando nesse arquivo as instruções necessárias para a criação do nosso cluster de containers, e as images que vamos utilizar, os volumes, as variáveis, as portas que vamos expor e etc.
Exemplos:
WordPress
Vamos criar a estrutura para o wordpress:
[root@notebook docker]# mkdir wordpress
[root@notebook docker]# cd wordpress/
E criamos nosso compose file:
[root@notebook wordpress]# touch docker-compose.yml
version: '2' services: db: image: mysql restart: always expose: - 3306 environment: MYSQL_ROOT_PASSWORD: teste123 MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress MYSQL_DATABASE: wordpress wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress links: - db:mysql
Executamos:
[root@notebook wordpress]# docker-compose up -d
Starting wordpress_mysql_1 ... done
Starting wordpress_wordpress_1 ... done
Verificamos:
[root@notebook wordpress]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
wordpress_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Agora é só acessar nosso Browser e acessar “localhost:8080” e prosseguir com a instalação.
phpMyAdmin
Um outro exemplo de docker-compose bem legal pra ilustrar a funcionalidade do docker-compose é integrando um container de banco MySQL com o phpMyAdmin.
Vamos lá:
[root@notebook docker]# mkdir phpmyadmin
[root@notebook docker]# cd phpmyadmin/
E criamos nosso docker-compose:
[root@notebook phpmyadmin]# touch docker-compose.yml
E inserimos o seguinte conteúdo:
version: '2' services: db: image: "mysql:latest" restart: always expose: - 3306 environment: MYSQL_ROOT_PASSWORD: teste123 phpmyadmin: image: "phpmyadmin/phpmyadmin" restart: always ports: - 8080:80 environment: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: teste123 PMA_HOST: mysql links: - db:mysql
Startamos:
[root@notebook phpmyadmin]# docker-compose up -d
Creating phpmyadmin_db_1
Creating phpmyadmin_phpmyadmin_1
Verificamos:
[root@notebook phpmyadmin]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
phpmyadmin_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
phpmyadmin_phpmyadmin_1 /run.sh phpmyadmin Up 0.0.0.0:8080->80/tcp
Acessamos nosso Browser “localhost:8080” e voilá:
É possível verificar os logs do nosso docker-compose utilizando o seguinte comando:
[root@notebook phpmyadmin]# docker-compose logs -f
CONCLUSÃO:
Estes foram dois exemplos simples de como utilizar o docker-compose, ao longo dos meus estudos tentarei subir aplicações mais complexas utilizando o compose versão 3, linkando diversos containers, utilizando networks, volumes, replicação e etc.
Referência:
https://hub.docker.com/_/wordpress/
https://hub.docker.com/r/phpmyadmin/phpmyadmin/