Solución:
Debes evitar el uso de enlaces. En cambio, los servicios de la misma red Docker pueden encontrarse entre sí mediante el uso de nombres de servicio como nombres DNS. Úselo para hacer referencia al contenedor específico que describió, incluso cuando se hace referencia a sí mismo.
Por ejemplo, en el siguiente archivo compuesto de Docker Compose, si someservice
era un servidor web que funcionaba en el puerto 80, anotherservice
el servicio podría conectarse a él en http://someservice/
, porque están en una red común the_net
.
version: '3'
services:
someservice:
image: someserviceimage
networks:
- the_net
anotherservice:
image: anotherserviceimage
networks:
- the_net
networks:
the_net:
someservice
también puede llegar a sí mismo en http://someservice/
.
extra_hosts
hizo el truco para mí.
extra_hosts:
- "hostname:127.0.0.1"
Desde los documentos de docker-compose:
extra_hosts Agrega asignaciones de nombres de host. Utilice los mismos valores que el parámetro docker client –add-host.
extra_hosts: – “somehost: 162.242.195.82” – “otherhost: 50.31.209.229” Se creará una entrada con la dirección IP y el nombre de host en / etc / hosts dentro de los contenedores para este servicio, por ejemplo:
162.242.195.82 somehost 50.31.209.229 otrohost
Creo que la respuesta correcta es de
Los alias se pueden definir como parte de la declaración de red para un servicio. Consulte los alias en Redactar archivo de referencia para obtener más detalles al respecto. – Rey Chung Huang 24 de abril de 2017 a las 15:18
aquí está el ejemplo del documento
version: '2'
services:
web:
build: ./web
networks:
- new
worker:
build: ./worker
networks:
- legacy
db:
image: mysql
networks:
new:
aliases:
- database
legacy:
aliases:
- mysql
networks:
new:
legacy:
puedes acceder al db
en este docker-compose, también puede usar mysql
para conectar esto db