A configuração e gerenciamento de ambientes de desenvolvimento pode ser um desafio, especialmente quando precisamos lidar com múltiplos serviços que devem interagir entre si, como o WordPress, MySQL e phpMyAdmin. Felizmente, ferramentas como o Docker e Docker Compose simplificam enormemente esse processo, permitindo que desenvolvedores configurem rapidamente ambientes consistentes e isolados.
O Docker Compose é uma ferramenta poderosa que permite definir e gerenciar aplicativos multi-contêiner. Usando um simples arquivo docker-compose.yml
, podemos orquestrar a criação, configuração e ligação de múltiplos serviços, tornando o processo de desenvolvimento mais eficiente e menos propenso a erros.
Segue abaixo o docker-compose.yml que eu uso no dia a dia para desenvolvimento, mas antes, crie uma rede docker chamada proxy.
docker network create proxy
services:
traefik:
image: "traefik"
container_name: "traefik"
restart: always
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- proxy
wordpress:
container_name: wordpress
image: wordpress
restart: always
networks:
- proxy
environment:
WORDPRESS_DB_HOST: wordpress
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: dbname
volumes:
- ./wordpress:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.wordpress.rule=Host(`wordpress.docker.localhost`)"
- "traefik.http.routers.wordpress.entrypoints=web"
mysql:
image: ubuntu/mysql:latest
container_name: mysql
restart: always
networks:
- proxy
ports:
- 3306:3306
- 33060:33060
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_RANDOM_ROOT_PASSWORD: '1'
cap_add:
- SYS_NICE
volumes:
- ./database:/var/lib/mysql
phpmyadmin:
image: phpmyadmin
container_name: "phpmyadmin"
restart: always
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.docker.localhost`)"
- "traefik.http.routers.phpmyadmin.entrypoints=web"
environment:
- PMA_ARBITRARY=1
networks:
proxy:
external: true
Você pode conferir este docker-compose.yml no Gist
Categorias: Docker, Geral
Tags: container, docker
Show. Obrigado. Só uma observação: não é necessário mais usar a versão no Docker compose. Foi depreciado.