Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

829
Visualizações
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!

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

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

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda