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

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

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 Report

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 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!