Muito grato a todos envolvidos nesse curso! Excelente curso, renovei meus conhecimentos e me atualizei com novos recursos do Docker.
Segue minhas anotações das últimas aulas sobre docker compose, um resumo básico e links de referência. Pode ser que contribua e talvez seja útil pra alguém, e aceito sugestões.
_
docker compose
O objetivo é criar um arquivo de coordenação com o nome docker-compose.test.yml para subir um container do Wordpress com MariaDB e depois apaga tudo e repetir o processo.
- Criar uma network com o nome network-test
- Criar container de serviço de banco de dados do MariaDB com o nome de db-service-test na network acima, definindo o usuários e senhas do db, e também criar uma tabela com o nome wordpress.
- Criar um container com Wordpress, de nome wordpress-test, na mesma network e conectar ao db fazendo o link entre containers (external_links)
- Checa se as configurações do arquivo YML estão ok (config)
- Criar e iniciar os serviços em background (up --detach)
- Configurar e abrir o Wordpress via browser
- Apaga tudo!
- Encerrar todo os serviços, baixa todos os containers
- Remover todo os serviços, deletando os containers
- Remove a network network-test
docker-compose.test.yml
version: "3.9"
networks:
network-test:
driver: bridge
name: network-test
services:
mariadb:
image: mariadb:jammy
container_name: db-service-test
restart: always
environment:
- MARIADB_USER=admin
- MARIADB_PASSWORD=123456
- MARIADB_DATABASE=wordpress
- MARIADB_ROOT_USER=root
- MARIADB_ROOT_PASSWORD=rootpass123
networks:
- network-test
wordpress:
image: wordpress:php8.2-apache
container_name: wordpress-test
restart: always
environment:
- WORDPRESS_DB_HOST=db-service-test
- WORDPRESS_DB_USER=admin
- WORDPRESS_DB_PASSWORD=123456
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_TABLE_PREFIX=wp_
networks:
- network-test
ports:
- 8086:80
external_links:
- db-service-test:mariadb:jammy
depends_on:
- mariadb
- checa a estrutura do arquivo .yml
docker compose --file docker-compose.test.yml config
- Criar e iniciar os serviços em background
docker compose --file <path to .yml> up --detach
- Configurar a língua e os dados de login do Wordpress acessando pelo link: http://0.0.0.0:8086/
Voilá!!!
Se for uma segunda instalação, após remover os containers e recriá-lo, usando a mesma porta, pode dar erro de conexão ao DB devido ao cache do navegador, com os dados do Wordpress anterior, as seguintes ações podem ajudar:
- Usando o Chrome, acesse
chrome://net-internals/#dns
e clique em Clear host cache (ou limpe o cache do seu navegador), retorne ao link e atualize a página, pressionando Shift+F5 algumas vezes. - E sendo mais hard core, dependendo da aplicação, reinicie o DNS do host pelo terminal com
sudo /etc/init.d/nscd restart
. Em um projeto real, ao remover e recriar o container, é prudente usar métodos na aplicação que forcem a atualização do cache no lado do usuário. - Ou simplesmente, altere a porta do Wordpress no arquivo YML e rode. Vai funcionar!!! ;-)
_
- Apaga tudo!
Encerra todos os serviços, baixa todos os containers
docker compose --file <path to .yml> kill
Remove todos os serviços, deletando os containers
docker compose --file <path to .yml> rm -f
Remove a network
docker network rm <network_name>
...ou simplesmente com apenas um comando executa as três ações acima
docker compose --file <path to .yml> down
Done!!!
_
Ref:
https://docs.docker.com/compose/reference/
https://docs.docker.com/compose/gettingstarted/
https://docs.docker.com/compose/compose-file/compose-file-v3/
https://github.com/compose-spec/compose-spec/blob/master/spec.md#the-compose-specification