Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

828
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!