Jul*_* W. 5 postgresql psql docker docker-compose
我在使用 Postgres 和 Docker 时遇到了这个奇怪的错误。因此,我的 docker-compose 文件中有两个服务:
\nversion: '3'\nservices:\n db:\n image: postgres\n restart: always\n ports:\n - '5432:5432'\n environment:\n POSTGRES_PASSWORD: pass123\n\n test-db:\n image: postgres\n restart: always\n ports:\n - '5433:5433'\n environment:\n POSTGRES_PASSWORD: pass123\nRun Code Online (Sandbox Code Playgroud)\n因此,当我运行“docker-compose up -d”时,两个容器都会被安装。命令“docker ps”给了我:
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\na76fcc56f928 postgres "docker-entrypoint.s\xe2\x80\xa6" 6 seconds ago Up 5 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp nodejs-nest_iluvcoffe_db_1\n9ab54557063f postgres "docker-entrypoint.s\xe2\x80\xa6" 6 seconds ago Up 5 seconds 5432/tcp, 0.0.0.0:5433->5433/tcp, :::5433->5433/tcp nodejs-nest_iluvcoffe_test-db_1\nRun Code Online (Sandbox Code Playgroud)\n当我尝试连接到映射端口 5432->5432 的容器时,一切都很好。但是当我尝试连接到映射端口 5433->5433 的容器时,出现错误:
\nserver closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.\nRun Code Online (Sandbox Code Playgroud)\n但是,如果我将端口映射为:
\nversion: '3'\nservices:\n db:\n image: postgres\n restart: always\n ports:\n - '5432:5432'\n environment:\n POSTGRES_PASSWORD: pass123\n\n test-db:\n image: postgres\n restart: always\n ports:\n - '5433:5432'\n environment:\n POSTGRES_PASSWORD: pass123\nRun Code Online (Sandbox Code Playgroud)\n然后,我将在我的“docker ps”中包含:
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n5228461a2cff postgres "docker-entrypoint.s\xe2\x80\xa6" 6 seconds ago Up 5 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp nodejs-nest_iluvcoffe_db_1\n39353d05004c postgres "docker-entrypoint.s\xe2\x80\xa6" 6 seconds ago Up 5 seconds 0.0.0.0:5433->5432/tcp, :::5433->5432/tcp nodejs-nest_iluvcoffe_test-db_1\nRun Code Online (Sandbox Code Playgroud)\n我可以连接到两个容器/postgres 服务器。有人知道为什么吗?为什么我不能使用 5433->5433 端口映射?
\n我相信我明白发生了什么。在容器内部,默认情况下,postgres 将在端口 5432 上运行,即使我映射 ports 指令:
ports:
- '5433:5433'
Run Code Online (Sandbox Code Playgroud)
为了告诉 postgres 在容器内运行哪个端口,我使用了以下设置:
version: '3'
services:
db:
image: postgres
restart: always
ports:
- '5432:5432'
environment:
POSTGRES_PASSWORD: pass123
test-db:
image: postgres
restart: always
ports:
- '5433:5433'
environment:
POSTGRES_PASSWORD: pass123
command: -p 5433
Run Code Online (Sandbox Code Playgroud)
现在一切正常
| 归档时间: |
|
| 查看次数: |
5768 次 |
| 最近记录: |