Postgres,本地安装的实例干扰了 Docker 个实例
Postgres, Local installed instance interfered with Docker instance
Windows 10-专业版。安装了本地 Postgres 并且工作正常。
有了它运行ning,VSC终端,docker-compose up
以下就可以了:
version: '3.8'
services:
postgres:
image: postgres:10.4.2
ports:
- '5432:5432'
volumes:
- ./sql:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass1
POSTGRES_DB: db
但是 PSQL shell 总是抱怨用户密码验证失败。
正在从 Windows 服务和 docker-compose up
、PSQL shell 身份验证和查询停止 postgres 服务。但是 VSC 终端一直在抱怨另一件事:
FATAL: password authentication failed for user "postgres"
DETAIL: User "postgres" has no password assigned.
Connection matched pg_hba.conf line 95: "host all all all md5"
当docker容器实例为运行ning时如何停止上述错误?此外,可以同时 运行 本地和 docker?
希望您享受容器之旅!
我试图按原样执行您的 docker-compose 但无法获取 postgres:10.4.2 图像:
❯ docker-compose up
[+] Running 0/1
⠿ postgres Error 2.1s
Error response from daemon: manifest for postgres:10.4.2 not found: manifest unknown: manifest unknown
所以我决定改用 postgres:14.2。由于我没有您的 sql 脚本,我将注释掉音量部分。
这是我的 docker-compose 的样子:
version: '3.8'
services:
postgres:
image: postgres:14.2
ports:
- '5432:5432'
# volumes:
# - ./sql:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass1
POSTGRES_DB: db
所以,当执行撰写时,我得到了这个:
❯ docker-compose up -d
[+] Running 1/1
⠿ Container postgre-local-and-dockercompose-71984505-postgres-1 Started
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
4b90573f6108 postgres:14.2 "docker-entrypoint.s…" 18 seconds ago Up 15 seconds 0.0.0.0:5432->5432/tcp postgre-local-and-dockercompose-71984505-postgres-1
当我连接到容器时:
❯ docker exec -it postgre-local-and-dockercompose-71984505-postgres-1 bash
root@4b90573f6108:/#
并执行此命令以连接到您创建的数据库并使用“pass1”密码连接:
root@4b90573f6108:/# psql --username=$POSTGRES_USER -W --host=localhost --port=5432 --dbname=$POSTGRES_DB
Password:
psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.
db=#
一切都很好。
因此,我建议您使用我尝试过的 postgres:14.2 图像(用最后一个安全问题修补)并进行相同的测试。
如果你想让我准确地测试你在做什么,只需发送你的 sql 脚本。
要回答你的第二个问题,是的,可以 co-run 本地和 docker postgres 实例
你只需要 port-forward 你的容器的 postgresql 端口到另一个端口,像这样:
version: '3.8'
services:
postgres:
image: postgres:14.2
ports:
- '5433:5432'
# volumes:
# - ./sql:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass1
POSTGRES_DB: db
因为没有端口冲突(你的本地数据库在 5432 上是 运行 而你的数据库在 5433 上是 docker),一切都会正常工作(我将使用 dbeaver 尝试连接):
完美!
希望我回答了你的问题。
bguess.
Windows 10-专业版。安装了本地 Postgres 并且工作正常。
有了它运行ning,VSC终端,docker-compose up
以下就可以了:
version: '3.8'
services:
postgres:
image: postgres:10.4.2
ports:
- '5432:5432'
volumes:
- ./sql:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass1
POSTGRES_DB: db
但是 PSQL shell 总是抱怨用户密码验证失败。
正在从 Windows 服务和 docker-compose up
、PSQL shell 身份验证和查询停止 postgres 服务。但是 VSC 终端一直在抱怨另一件事:
FATAL: password authentication failed for user "postgres"
DETAIL: User "postgres" has no password assigned.
Connection matched pg_hba.conf line 95: "host all all all md5"
当docker容器实例为运行ning时如何停止上述错误?此外,可以同时 运行 本地和 docker?
希望您享受容器之旅!
我试图按原样执行您的 docker-compose 但无法获取 postgres:10.4.2 图像:
❯ docker-compose up
[+] Running 0/1
⠿ postgres Error 2.1s
Error response from daemon: manifest for postgres:10.4.2 not found: manifest unknown: manifest unknown
所以我决定改用 postgres:14.2。由于我没有您的 sql 脚本,我将注释掉音量部分。
这是我的 docker-compose 的样子:
version: '3.8'
services:
postgres:
image: postgres:14.2
ports:
- '5432:5432'
# volumes:
# - ./sql:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass1
POSTGRES_DB: db
所以,当执行撰写时,我得到了这个:
❯ docker-compose up -d
[+] Running 1/1
⠿ Container postgre-local-and-dockercompose-71984505-postgres-1 Started
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
4b90573f6108 postgres:14.2 "docker-entrypoint.s…" 18 seconds ago Up 15 seconds 0.0.0.0:5432->5432/tcp postgre-local-and-dockercompose-71984505-postgres-1
当我连接到容器时:
❯ docker exec -it postgre-local-and-dockercompose-71984505-postgres-1 bash
root@4b90573f6108:/#
并执行此命令以连接到您创建的数据库并使用“pass1”密码连接:
root@4b90573f6108:/# psql --username=$POSTGRES_USER -W --host=localhost --port=5432 --dbname=$POSTGRES_DB
Password:
psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.
db=#
一切都很好。
因此,我建议您使用我尝试过的 postgres:14.2 图像(用最后一个安全问题修补)并进行相同的测试。 如果你想让我准确地测试你在做什么,只需发送你的 sql 脚本。
要回答你的第二个问题,是的,可以 co-run 本地和 docker postgres 实例
你只需要 port-forward 你的容器的 postgresql 端口到另一个端口,像这样:
version: '3.8'
services:
postgres:
image: postgres:14.2
ports:
- '5433:5432'
# volumes:
# - ./sql:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass1
POSTGRES_DB: db
因为没有端口冲突(你的本地数据库在 5432 上是 运行 而你的数据库在 5433 上是 docker),一切都会正常工作(我将使用 dbeaver 尝试连接):
完美!
希望我回答了你的问题。
bguess.