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

716
Vistas
Cómo pasar la ip del contenedor como ENV a otro contenedor en el archivo docker-compose

este es mi archivo docker-compose:

 version: '3.0' services: app-web: restart: always build: ./web environment: PG_HOST: $(APP_DB_IP) PG_PORT: 5432 ports: - "8081:8080" links: - app-db app-db: build: ./db expose: - "5432" volumes: - /var/lib/postgresql/data

Quiero pasar a app-web la ip de app-db (Postgresql en este caso) como ENV var para que pueda conectarse a la base de datos sin problemas... ¿alguna idea de cómo lograrlo?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En realidad, no necesita hacer nada de esto, ya que ya está utilizando la función de links en Docker Compose. Simplemente deshágase de la variable PG_HOST y use el nombre de host app-db :

 services: app-web: restart: always build: ./web environment: PG_PORT: 5432 ports: - "8081:8080" links: - app-db

Dado que incluyó la entrada app-db en links , simplemente puede usar app-db como nombre de host en su contenedor app-web . Docker configurará una asignación de nombre de host en el contenedor app-web la app-db que resuelve el nombre de host de la base de datos de la aplicación en la dirección IP del contenedor de la base de datos.

Puede verificarlo ejecutando lo siguiente, que intentará hacer ping al contenedor app-db desde el contenedor app-web :

 docker-compose exec app-web bash -c "ping app-db"

Esto debería mostrar el resultado del comando ping que muestra la dirección IP resuelta del contenedor app-db , por ejemplo, así:

 PING app-db (172.19.0.2): 56 data bytes 64 bytes from 172.19.0.2: icmp_seq=0 ttl=64 time=0.055 ms 64 bytes from 172.19.0.2: icmp_seq=1 ttl=64 time=0.080 ms 64 bytes from 172.19.0.2: icmp_seq=2 ttl=64 time=0.098 ms

Presione ctrl+c para detener el comando ping.

Como se muestra en la otra respuesta, si aún desea pasar el nombre de host (lo que probablemente sea una buena idea, en caso de que alguna vez quiera apuntar a una base de datos diferente), puede usar app-db como un valor:

 services: app-web: restart: always build: ./web environment: PG_HOST: app-db PG_PORT: 5432 ports: - "8081:8080" links: - app-db
about 4 years ago · Santiago Trujillo Denunciar

0

Puede usar app-db como nombre en lugar de ip, la ventana acoplable determinará automáticamente cuál es la ip correcta. Como se indica en los documentos de Docker: un contenedor siempre puede descubrir otros contenedores en la misma pila usando solo el nombre del contenedor como nombre de host.

Así que en tu ejemplo puedes usar:

 environment: PG_HOST: app-db

Fuente: https://docs.docker.com/docker-cloud/apps/service-links/#discovering-containers-on-the-same-service-or-stack

about 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