Compose com build de imagem
Até então o processo de build de imagem era realizado a partir do arquivo Dockerfile da aplicação com o comando abaixo:
$ docker build -t marcelodpbarbieri/kube-news:v1 -f DockerfileCom o Docker Compose é possível especificar os parâmetros de build de uma imagem.
Antes, baixar o Docker Compose:
~/compose$ docker compose down
[+] Running 4/4
✔ Container compose-nginx-1 Removed 0.5s
✔ Container compose-kubenews-1 Remove... 10.6s
✔ Container compose-postgre-1 Removed 0.5s
✔ Network compose_default Removed 0.7sRemove a especificação do container nginx do arquivo compose.yaml e ajustar as especificações da rede:
services:
postgre:
image: postgres:13.16
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: kubenews
POSTGRES_USER: kubenews
POSTGRES_DB: kubenews
volumes:
- postgre-docker-vol:/var/lib/postgresql/data
networks:
- kubenews-net
kubenews:
image: marcelodpbarbieri/kube-news:v2
ports:
- 8080:8080
depends_on:
- postgre
environment:
DB_DATABASE: kubenews
DB_USERNAME: kubenews
DB_PASSWORD: kubenews
DB_HOST: postgre
networks:
- kubenews-net
volumes:
postgre-docker-vol:
networks:
kubenews-net:
driver: bridgeDemais ajustes nos containers, redes e imagens existentes:
Build de image
Mover o arquivo compose.yaml para dentro do diretório da aplicação:
O container kube-news precisa ser especificada para dizer que ela passará pelo processo de construção da imagem:
Listar as imagens existentes antes de subir o Docker Compose:
Foi realizado o pulling da imagem kubenews:
Listar as imagens após subir o Docker Compose para demonstrar que a imagem marcelodpbarbieri/kube-news:latest foi baixada:
Porém não foi realizado o build da aplicação!
Para isso, faz-se necessário passar a instrução --build para o comando docker compose up -d:
Com isso, a especificação de build inserida no arquivo compose.yaml é considerada, porém é necessária a existente do arquivo Dockerfile da aplicação:
Se o namespace não existir e não for especificada a instrução --build, ele fará o build da aplicação pois a imagem não existe:
Outras Opções
Fazer somente o build das imagens:
Push da imagem
Baixar as imagens que fazem parte do projeto
Limpar o ambiente:
Utilizar uma versão existente no Docker Registry:
Construir a imagem da aplicação:
Baixar as imagens do projeto:
Com as imagens baixadas o processo de build é mais rápido:
O desenvolvimento fica mais eficiente.
Também existe a opção de hot-reload para as alterações da aplicação.
Last updated