Esta respuesta es para docker-compose versión 2 y también funciona en la versión 3
Todavía puede acceder a los datos cuando utiliza depede_on.
Si observa los documentos de Docker Docker Compose y Django , aún puede acceder a la base de datos de esta manera:
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
¿Cuál es la diferencia entre links y dependen_on?
Enlaces:
Cuando crea un contenedor para una base de datos, por ejemplo:
docker run -d --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -P mysql
docker inspect d54cf8a0fb98 |grep HostPort
Y puedes encontrar
"HostPort": "32777"
Esto significa que puede conectar la base de datos desde su puerto localhost 32777 (3306 en el contenedor) pero este puerto cambiará cada vez que reinicie o elimine el contenedor. Por lo tanto, puede usar enlaces para asegurarse de que siempre se conectará a la base de datos y no tiene que saber qué puerto es.
web:
links:
- db
depende de:
Encontré un buen blog de Giorgio Ferraris Docker-compose.yml: de V1 a V2
Cuando docker-compose ejecuta archivos V2, construirá automáticamente una red entre todos los contenedores definidos en el archivo, y cada contenedor podrá referirse inmediatamente a los demás simplemente usando los nombres definidos en el archivo docker-compose.yml.
Y
Entonces ya no necesitamos enlaces; los enlaces se usaron para iniciar una comunicación de red entre nuestro contenedor de db y nuestro contenedor de servidor web, pero esto ya lo hace docker-compose
Actualizar
Expresar dependencia entre servicios, que tiene dos efectos:
docker-compose up
iniciará los servicios en orden de dependencia. En el siguiente ejemplo, db y redis se iniciarán antes que la web.
docker-compose up SERVICE
incluirá automáticamente las dependencias de SERVICIO. En el siguiente ejemplo, docker-compose up web también creará e iniciará db y redis.
Ejemplo simple:
version: '2'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
Nota: depende_on no esperará a que db y redis estén "listos" antes de iniciar la web, solo hasta que se hayan iniciado. Si necesita esperar a que un servicio esté listo, consulte Control del orden de inicio para obtener más información sobre este problema y las estrategias para resolverlo.
--link
indicador ahora es una característica heredada en desuso de Docker y la documentación sugiere " Docker eventualmente se eliminará" Docker: enlaces de contenedores heredados . Se sugiere no utilizar la función de redes de Docker o el método de composición de Docker . Pensé que esto sería útil para cualquiera que esté aquí aprendiendo sobre esta característica.