当前位置: 首页 > 知识库问答 >
问题:

正在从docker-compose文件连接到Postgres docker容器[重复]

百里文景
2023-03-14

我有两个项目。第一个包含以下docker-compose.yml:

# pg/docker-compose.yml
version: "3"
services:
  postgres:
    image: postgres
    environment:
      POSTGRES_USER: pguser
      POSTGRES_DB: pg
    ports:
      - "5432:5432"
    volumes:
      - "postgres-data:/var/lib/postgresql/data"
    networks:
      - some_net

volumes:
  postgres-data:

networks:
  some_net:
    driver: bridge

第二个项目有这个docker compose文件:

# pg_client/docker-compose.yml
version: "3"
services:
  postgres_client:
    image: tmaier/postgresql-client
    command: postgres://pguser@localhost:5432/pg
    networks:
      - pg_some_net

networks:
  pg_some_net:
    external: true

我可以很好地从命令行连接到我的Postgres数据库:

$ psql postgres://pgmuser@localhost:5432/pg
psql (12.1)
Type "help" for help.

pg=#

但是,当postgres_client容器尝试连接时(在运行docker-compose up之后),它会失败,并表示

postgres_client_1  | psql: could not connect to server: Connection refused
postgres_client_1  |        Is the server running on host "localhost" (127.0.0.1) and accepting
postgres_client_1  |        TCP/IP connections on port 5432?
postgres_client_1  | could not connect to server: Address not available
postgres_client_1  |        Is the server running on host "localhost" (::1) and accepting
postgres_client_1  |        TCP/IP connections on port 5432?

在编写Postgres连接URI时,关于docker-compose有什么特别的地方需要说明吗?

非常感谢任何帮助。

共有1个答案

常飞翼
2023-03-14

postgres的主机名应解析为postgres而不是localhost。你可以试试

command: postgres://pguser@postgres:5432/pg
 类似资料:
  • 我想在一个容器中运行 RabbitMQ,在另一个容器中运行工作进程。工作进程需要访问 RabbitMQ。 我希望这些通过进行管理。 这是我的<代码>docker compose。迄今为止,yml文件: 所以我暴露了RabbitMQ端口。工作进程使用以下URL访问RabbitMQ: 这是他们在官方教程中使用的,但是已被替换为,因为容器应该可以使用与容器名称相同的主机名来发现: 默认情况下,“合成”会

  • 我有一个在节点容器和redis容器中运行的express API。当试图将节点容器连接到redis时,我遇到了以下错误。

  • 问题内容: 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 Docker-machine正常运行,并且能够通过docker-machine ssh连接。 但是无法从docker-compose连接。 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗? 如果它

  • 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 docker-machine运行正常,并且能够通过docker-machine SSH进行连接。 但无法从Docker-Compose连接。 无法连接到HTTP+UNIX上的Docker后台进程://var/run/Docker.sock-它正在运行吗? 如果它位于非标准位置

  • 我在一个服务器上安装了MySQL server,并进行了dockerized项目,数据库是不能公开访问的,只能从服务器内部访问。它也被本地的非dockerized应用程序使用。我想从docker内部连接到它,但它仍然不能公开访问,我尝试了172.17.0.1,但我的连接被拒绝。当前的bind_address是127.0.0.1,您建议bind_address是什么?

  • 我正在运行2个spring boot应用程序:一个客户端和rest-api。客户机与rest-api通信,rest-API与mongodb数据库通信。所有3层都在docker容器中运行。 我启动容器,通常指定docker文件中公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中7070是docker文件中公开的端口。 当我通过< code > Java-jar[applic