No podemos hacer faciltamente orquestación, varios contenedores y servicios trabajando en conjunto
Ejemplo¶
Se han construido esta estructura
.
├── adminer
│ └── Dockerfile
├── mysql
│ └── Dockerfile
└── postgres
└── Dockerfile
- adminier es una app en Php para conectarse a multiples bases de datos, se expone puerto 8080
- mysql utiliza una imagen de mariadb, se expone 3306 y MARIADB_ROOT_PASSWORD=rootpassword
- postgres utiliza una imagen de postgres expone 5306 ENV OSTGRES_PASSWORD=rootpassword ENV POSTGRES_DB=mydatabase ENV POSTGRES_USER=myuser Se ejecutan estos comandos
#Construir las imagenes
docker build -t adminer adminer
docker build -t mysql mysql/
docker build -t postgres postgres/
#LAnzar contenedores
8729* docker run -d -p 8080:8080 adminer:latest
8733* docker run -d -p 3306:3306 mysql:latest
8734* docker run -d -p 5432:5432 postgres:latest}
#Revisar
docker ps
Localmente con un programa se pueden acceder las bases de datos

Pero al ingresar al adminer localhost:8080 este no puede ver los otros contenedores
Docker compose¶
Docker compose permite orquestar contendedores de tal forma se puedan ver entre ellos, además permite configurar los tipos de redes que van a usarse entre, por ejemplo, si por alguna razón quiero que un contenedor tenga acceso a internet.
Se crea el archivo docker-compose.yaml
services:
adminer:
image: adminer
restart: always
ports:
- 8080:8080
mariadb:
image: mariadb
restart: always
ports:
- 3306:3306
environment:
MARIADB_ROOT_PASSWORD: rootpassword
postgres:
image: postgres
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: mydb
ports:
- 5432:5432
Para levantar los servicios
docker compose up -d
Para bajar los servicios
docker compose down