如何在没有IP地址的情况下访问postgres-docker容器其他docker容器

时间:2018-06-19 11:47:37

标签: postgresql docker docker-compose

如何在没有IP地址的情况下访问postgres-docker容器和其他docker容器? 我想通过使用myweb将数据存储在postgres中。在给定主机(例如localhost:5432 / db)的jar中。

这是我的撰写文件:

version: "3"

services:
   myweb:
    build: ./myweb
    container_name: app
    ports:
      - "8080:8080"
      - "9090:9090"
    networks:
      - front-tier
      - back-tier
    depends_on:
      - "postgresdb"

   postgresdb:
    build: ./mydb
    image: ppk:postgres9.5
    volumes:
      - dbdata:/var/lib/postgresql
    ports:
      - "5432:5432"
    networks:
     - back-tier

volumes:
   dbdata: {}

networks:
  front-tier:
  back-tier:

1 个答案:

答案 0 :(得分:1)

使用localhost:5432/db..连接字符串代替postgresdb:5432/db..

默认情况下,容器的主机名与服务名称相同。


这是我的最小工作示例,该示例将Java客户端(boxfuse / flyway)与postgres服务器连接。最重要的部分是健康检查,该操作将myweb容器的启动延迟到postgres准备接受连接的时间。

请注意,可以由docker-compose up直接执行,它没有任何其他依赖性。这两个图像均来自docker hub。

version: '2.1'

services:
   myweb:
    image: boxfuse/flyway
    command: -url=jdbc:postgresql://postgresdb/postgres -user=postgres -password=123 info
    depends_on:
      postgresdb:
        condition: service_healthy

   postgresdb:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=123
    healthcheck:
      test: "pg_isready -q -U postgres"