docker-compose
Ejemplo de Docker-compose multi-contenedor con red predeterminada
Buscar..
Observaciones
Por defecto, Compose configura una sola red para su aplicación. Cada contenedor para un servicio se une a la red predeterminada y es accesible tanto por otros contenedores en esa red como por un nombre de host idéntico al nombre del contenedor.
Los enlaces le permiten definir alias adicionales mediante los cuales se puede acceder a un servicio desde otro servicio. No están obligados a permitir que los servicios se comuniquen; de forma predeterminada, cualquier servicio puede llegar a cualquier otro servicio a su nombre.
Cómo crear un entorno LAMP básico con redes por defecto
docker-compose.yml
version: '2'
services:
php:
image: phpmyadmin/phpmyadmin
links:
- mysql:db
depends_on:
- mysql
mysql:
image: k0st/alpine-mariadb
volumes:
- ./data/mysql:/var/lib/mysql
environment:
- MYSQL_DATABASE=mydb
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypass
nginx:
image: nginx:stable-alpine
ports:
- "81:80"
volumes:
- ./nginx/log:/var/log/nginx
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- php
nginx / nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile off;
server {
listen 80;
location / {
proxy_pass http://php;
proxy_set_header Host $host;
proxy_redirect off;
}
}
}
Tenga en cuenta que la configuración de nginx está simplificada, pero lo anterior debería funcionar para las pruebas; básicamente, todo lo que está haciendo es usar la aplicación php. Se asigna al puerto 81 para evitar conflictos en el host; ajústelos según sea necesario.
En cuanto a la vinculación, se puede ver que si se ejecuta: docker-compose exec mysql ping -c2 nginx
hacer ping desde el contenedor de MySQL al contenedor nginx, usted tendrá éxito a pesar de que no hay enlaces especificados entre estos contenedores. Docker Compose mantendrá esos enlaces en la red predeterminada para usted.