首页 > 解决方案 > 如何在没有 ip 地址的情况下访问 postgres-docker 容器其他 docker 容器

问题描述

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

这是我的撰写文件:

版本:“3”

服务:
   我的网站:
    构建:./myweb
    容器名称:应用程序
    端口:
      - “8080:8080”
      - “9090:9090”
    网络:
      - 前线
      - 后台
    取决于:
      - “postgresdb”

   postgresdb:
    构建:./mydb
    图片:ppk:postgres9.5
    卷:
      - 数据库数据:/var/lib/postgresql
    端口:
      - “5432:5432”
    网络:
     - 后台

卷:
   数据库数据:{}

网络:
  前线:
  后台:

标签: postgresqldockerdocker-compose

解决方案


而不是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"      

推荐阅读