Actualmente estoy trabajando en un proyecto en el que rehago un proyecto existente para usarlo en contenedores docker. Tengo 3 contenedores diferentes:
Ahora estoy tratando de vincular estos contenedores, pero no estoy seguro de haber entendido bien la red de la ventana acoplable. ¿Tengo razón al suponer que en un archivo docker-compose.yml:
Entonces, ¿tengo que vincular y exponer siempre? ¿Esto siempre funciona en ambas direcciones (los mensajes de socket.io también se pueden devolver)?
Entonces, ¿sería correcto algo como esto (formato de la versión 3):
nodeserver: ports: -3000:3000 expose: -3001 links: -database ... database: (image mysql...) application: links: -nodeserver ...¿Podrían la aplicación y la página web llegar ahora al servidor socket.io como nodeserver:3000 ?
Ya probé algo de esto, pero no lo he hecho funcionar completamente, así que quería asegurarme de entender todo primero. ¡Gracias por tu ayuda!
Si entendí su arquitectura de implementación, la application necesita acceder a nodeserver a través de socket.io en el puerto 3001, por lo que agrega un enlace con nodeserver a la aplicación, es correcto.
Pero el servidor de nodeserver sirve una página web que también se conecta a socket.io en el puerto 3001, por lo que el navegador no puede conectar el servidor de nodos en el puerto 3001.
Entonces solo necesita cambiar el nodeserver como se muestra a continuación:
nodeserver: ports: - "3000:3000" - "3001:3001" links: -database ...Enlaces:
Enlace a contenedores en otro servicio. Especifique tanto el nombre del servicio como un alias de enlace (SERVICIO:ALIAS) o solo el nombre del servicio.
Se podrá acceder a los contenedores para el servicio vinculado en un nombre de host idéntico al alias, o al nombre del servicio si no se especificó ningún alias.
puertos:
Exponer puertos. Especifique ambos puertos (HOST:CONTAINER) o solo el puerto del contenedor (se elegirá un puerto de host aleatorio).
exponer:
Exponga los puertos sin publicarlos en la máquina host; solo podrán acceder a ellos los servicios vinculados. Solo se puede especificar el puerto interno.
Ver más detalles: https://docs.docker.com/compose/compose-file