在 Docker Compose 中更改 postgres 容器服务器端口
Changing a postgres containers server port in Docker Compose
我正在尝试使用 Docker compose 在远程服务器上部署第二个数据库容器。此 postgresql 服务器在端口 5433 上运行,而不是第一个 postgresql 容器使用的 5432。
当我设置应用程序时,我得到这个错误输出:
web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused
web_1 | Is the server running on host "db" (172.17.0.2) and accepting
web_1 | TCP/IP connections on port 5433?
我的 docker 撰写文件是:
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: route_admin
POSTGRES_USER: route_admin
expose:
- "5433"
ports:
- "5433"
volumes:
- ./backups:/home/backups
web:
build: .
command: bash -c "sleep 5 && python -u application/manage.py runserver 0.0.0.0:8081"
volumes:
- .:/code
ports:
- "81:8081"
links:
- db
environment:
- PYTHONUNBUFFERED=0
我觉得问题一定是服务器实例上的 postgresql.conf
文件将端口设置为 5432,导致我的应用程序尝试连接到它时出现错误。有没有一种简单的方法可以使用撰写文件中的命令更改端口,而不是乱用卷来替换文件?
我正在使用官方的 postgresql 容器来完成这项工作。
假设 postgres 运行 在容器中的端口 5432 上并且你想在主机上的 5433 上公开它,这个 ports strophe:
ports:
- "5433:5432"
将在主机上的端口 5433 上公开服务器。在这种情况下,您可以摆脱现有的 expose strophe。
如果您只想将服务公开给在撰写文件中声明的其他服务(而不是本地主机),只需使用 expose strophe 并将其指向已经在内部公开的端口 5432。
有些人可能希望实际更改 Postgres 运行 上的端口,而不是使用 port 指令将暴露的端口重新映射到主机。
为此,请使用 command: -p 5433
在用于问题的示例中:
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: route_admin
POSTGRES_USER: route_admin
expose:
- "5433" # Publishes 5433 to other containers but NOT to host machine
ports:
- "5433:5433"
volumes:
- ./backups:/home/backups
command: -p 5433
请注意,只有主机会遵守端口指令。其他容器不会。
我正在尝试使用 Docker compose 在远程服务器上部署第二个数据库容器。此 postgresql 服务器在端口 5433 上运行,而不是第一个 postgresql 容器使用的 5432。
当我设置应用程序时,我得到这个错误输出:
web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused
web_1 | Is the server running on host "db" (172.17.0.2) and accepting
web_1 | TCP/IP connections on port 5433?
我的 docker 撰写文件是:
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: route_admin
POSTGRES_USER: route_admin
expose:
- "5433"
ports:
- "5433"
volumes:
- ./backups:/home/backups
web:
build: .
command: bash -c "sleep 5 && python -u application/manage.py runserver 0.0.0.0:8081"
volumes:
- .:/code
ports:
- "81:8081"
links:
- db
environment:
- PYTHONUNBUFFERED=0
我觉得问题一定是服务器实例上的 postgresql.conf
文件将端口设置为 5432,导致我的应用程序尝试连接到它时出现错误。有没有一种简单的方法可以使用撰写文件中的命令更改端口,而不是乱用卷来替换文件?
我正在使用官方的 postgresql 容器来完成这项工作。
假设 postgres 运行 在容器中的端口 5432 上并且你想在主机上的 5433 上公开它,这个 ports strophe:
ports:
- "5433:5432"
将在主机上的端口 5433 上公开服务器。在这种情况下,您可以摆脱现有的 expose strophe。
如果您只想将服务公开给在撰写文件中声明的其他服务(而不是本地主机),只需使用 expose strophe 并将其指向已经在内部公开的端口 5432。
有些人可能希望实际更改 Postgres 运行 上的端口,而不是使用 port 指令将暴露的端口重新映射到主机。
为此,请使用 command: -p 5433
在用于问题的示例中:
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: route_admin
POSTGRES_USER: route_admin
expose:
- "5433" # Publishes 5433 to other containers but NOT to host machine
ports:
- "5433:5433"
volumes:
- ./backups:/home/backups
command: -p 5433
请注意,只有主机会遵守端口指令。其他容器不会。