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

标签 postgresql docker docker-compose

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

这是我的撰写文件:

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:

最佳答案

使用 postgresdb:5432/db.. 连接字符串,而不是 localhost: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"      

关于postgresql - 如何在没有ip地址的情况下访问postgres-docker容器其他docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50927680/

相关文章:

postgresql - 如果 RedShift 中的字段类型是整数,我如何输入 varchar 值?

javascript - 防止 Postgres 中的更新冲突

spring - 慢子 SELECT GROUP BY JPQL 查询

database - 在首次运行docker-compose up时运行迁移或加载架构的最佳方法是什么?

docker - 如何在docker-compose.yml中将ARG传递给Dockerfile

java - 函数结果 AS 类字段值

docker - 根据主机操作系统在Docker Compose中更改镜像

Gradle 构建在 jenkins :alpine container: UnsatisfiedLinkError: linux-amd64/libnative-platform. so : libstdc++. so.6 中失败:

linux - 应用时错误拉取图像配置./get-docker-images.sh

Elasticsearch 忽略我的 JVM 堆大小设置