docker - 如何为 Docker postgres 实例指定不同的端口?

标签 docker docker-compose

我试图让一个 postgres 容器运行在不同的端口(5433 而不是默认的 5432)上,每个在线线程都像这样:
https://github.com/docker-library/postgres/issues/196#issuecomment-310209118

(端口更改的原因是因为我离开运行的一个不相关的项目已经在使用端口 5432,所以我希望能够在多个项目上同时运行 rspec。)

在我的测试环境中,我有
DATABASE_URL=postgresql://postgres:@db.local:5433/test_agile_self

当我使用端口 5432 时一切正常(在 DATABASE_URL 和 docker-compose.yml 中)

将端口更改为 5433 后,当我运行 rspec 时,我得到:

PG::ConnectionBad:
  could not connect to server: Connection refused
    Is the server running on host "db.local" (172.22.0.2) and accepting
    TCP/IP connections on port 5433?
# ./spec/spec_helper.rb:62:in `block (2 levels) in <top (required)>'

容器似乎确实在端口 5433 和 IP 地址 172.22.0.2 上运行:
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a8f5dee227e8        postgres:10.5       "docker-entrypoint.s…"   27 minutes ago      Up 14 seconds       0.0.0.0:5433->5432/tcp   zarc_db.local_1
$ docker inspect a8f5dee227e8 | grep "IPAddress"
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.22.0.2",

我的 docker-compose.yml 使用 ports: "5433:5432"根据上面链接的讨论。
#docker-compose.yml
version: '3'
services:
  web:
    build: .
    ports:
      - "3010:3010"
    volumes:
      - .:/my_app
    links:
      - db.local
    depends_on:
      - db.local

  db.local:
    image: postgres:10.5
    ports:
      - "5433:5432"

如果我在这两个位置(ENV 和 docker-compose.yml)将 5433 改回 5432,它会再次工作。

这是在运行 Mohave 10.14.3 和 Docker 18.09.2 的 Mac 上

最佳答案

在容器内部,所以在 DATABASE_URL端口需要保持相同的 5432。在 docker-compose 中您只使用给定的将现有端口 5432 作为 5433 映射到外部世界

ports:
    - "5433:5432"

关于docker - 如何为 Docker postgres 实例指定不同的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55115080/

相关文章:

java - 带有 Maven jar 的 docker

mongodb - Perseo fe docker 实例启动失败

tomcat - Docker 运行 tomcat 镜像没有端口映射

docker-compose 主机的 ip/hostname

为非 root 用户创建 Docker-compose 卷

docker - 命令 'cmd/S/C choco install --no-progress -y curl'返回了非零代码:3221225785

php - 如何将 PhpMyAdmin 与 Mysql 连接,这两者都托管在 Gcloud 的 Kubernetes 集群中

node.js - docker webpack编译文件运行时丢失

node.js - 多个应用程序的 Docker 设计

Docker 中的 Django 服务器