Solución:
Docker-componer es una herramienta que le permite implementar y administrar múltiples contenedores al mismo tiempo.
docke-compose.yml
El archivo contiene instrucciones sobre cómo hacerlo.
En este archivo, instruyes Docker-componer por ejemplo:
- De donde llevar
Dockerfile
para construir una imagen particular - Qué puertos quieres exponer
- Cómo vincular contenedores
- Qué puertos desea vincular a la máquina host
- etc …
Docker-componer lee ese archivo y ejecuta comandos.
Esta usado en lugar de todos los parámetros opcionales al compilar y ejecutar un solo contenedor Docker.
Ejemplo:
version: '2'
services:
nginx:
build: ./nginx
links:
- django:django
- angular:angular
ports:
- "80:80"
- "8000:8000"
- "443:443"
networks:
- my_net
django:
build: ./django
expose:
- "8000"
networks:
- my_net
angular:
build: ./angular2
links:
- django:django
expose:
- "80"
networks:
- my_net
networks:
my_net:
external:
name: my_net
Este ejemplo instruye Docker-componer para:
- Construir
nginx
desde la ruta ./nginx - Enlaces
Angular
ydjango
contenedores (por lo que su IP en la red acoplable se resuelve por nombre) - Vincula puertos
80
,443
,8000
a la máquina host - Agréguelo a la red my_net
(por lo que los 3 contenedores están en la misma red y, por lo tanto, son accesibles entre sí)
Entonces se hace similar para django
y Angular
envase.
Si solo usara comandos de la ventana acoplable, sería algo como:
docker build --name nginx .
docker run --link django:django angular:angular --expose 80 443 8000 --net my_net nginx
Entonces, aunque probablemente no desee escribir todas estas opciones y comandos para cada imagen / contenedor, puede escribir docker-compose.yml
archivo en el que escribe todas estas instrucciones en un formato legible por humanos.
(Lo mismo se puede lograr con Ansible)
Un docker-compose.yml es un archivo de configuración para docker-compose.
permite desplegar, combinar y configurar múltiples contenedores acoplables al mismo tiempo. la “regla” de Docker es subcontratar cada proceso a un contenedor propio.
por ejemplo, un simple web docker-compose. necesita un servidor, una base de datos y php. para que pueda configurar tres contenedores docker con apache2, php y mysql.
la ventaja de docker-compose es la fácil configuración. no es necesario escribir una gran cantidad de parámetros en el bash. su puede predefinirlo en el docker-compose.yml.
db:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: example_db
MYSQL_USER: root
MYSQL_PASSWORD: rootpw
php:
image: php
ports:
- "80:80"
- "443:443"
volumes:
- ./SRC:/var/www/
links:
- db
como puedes ver en mi ejemplo. Configuré los puertos, los volúmenes para los datos externos y los enlaces al otro contenedor de la ventana acoplable. es rápido, reproducible y no tan difícil de entender.