Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

836
Vistas
Docker (compose) y socket io: cómo vincular contenedores

Actualmente estoy trabajando en un proyecto en el que rehago un proyecto existente para usarlo en contenedores docker. Tengo 3 contenedores diferentes:

  • un servidor nodejs que abre una conexión socket.io en el puerto 3001 y sirve una página web (que también se conecta a ese servidor socket.io) en el puerto 3000
  • una base de datos MySQL que se necesita para el backend de nodejs
  • una pequeña aplicación que envía datos a través de socket.io al servidor

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:

  • puertos: expone los puertos a la computadora host (¿y también a todos los demás/todos los contenedores vinculados?)
  • enlaces: establece el orden de inicio y permite que un contenedor use otros puertos expuestos, nombre de host = nombre del contenedor
  • exponer: expone los puertos solo a todos los contenedores vinculados (no al host, no a los contenedores no vinculados)

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!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda