Postgresql docker entrypoint.sh脚本中的psql登录问题
我有两个集装箱。postgresql 2。graphql服务(两者都基于alpine) 我在entrypoint.sh中有上面的脚本(缩写),它是作为graphql服务dockerfile的一部分调用的。在docker compose中运行容器时,得到的错误如下Postgresql docker entrypoint.sh脚本中的psql登录问题,postgresql,docker,docker-compose,alpine,Postgresql,Docker,Docker Compose,Alpine,我有两个集装箱。postgresql 2。graphql服务(两者都基于alpine) 我在entrypoint.sh中有上面的脚本(缩写),它是作为graphql服务dockerfile的一部分调用的。在docker compose中运行容器时,得到的错误如下 #!/bin/sh until nc -vz postgresql 5432 &>/dev/null; do sleep 1 done if [ "$( psql -h postgresql -U postgr
#!/bin/sh
until nc -vz postgresql 5432 &>/dev/null; do
sleep 1
done
if [ "$( psql -h postgresql -U postgres -w -tAc "SELECT 1 FROM pg_database WHERE datname='devdb'" )" = '1' ]
then
echo "Database already exists"
else
echo "Running db creation & init routines"
fi
exec "$@"
我已经在postgresql
容器中设置了PGPASSWORD
。(同时设置POSTGRES\u密码
just和added度量)
我可以在容器内运行命令psql命令,并将结果作为1
。当从入口点脚本运行时,它会显示psql:fe\u sendauth:no password supplied
对这种行为有什么想法吗?复制/包括postgresql
docker image entrypoint.sh不是我想做的事情
dss-graphql | psql: fe_sendauth: no password supplied
database.env包含
version: "3.7"
services:
# postgresql
postgresql :
container_name : postgresql
hostname : postgresql
image : postgres:10-alpine
volumes :
- /var/lib/postgres/data
networks :
- backend
ports :
- 5432:5432
restart : on-failure
env_file :
- database.env
# dss-graphql
dss-graphql :
container_name : dss-graphql
hostname : dss-graphql
build :
dockerfile : dss-graphql.dev.dockerfile
context : ${PWD}/dss-graphql
image : dss-graphql
volumes :
- ${PWD}/dss-graphql:/dss-graphql
- /usr/local/bundle
networks :
- backend
ports :
- 3016:3000
tty : true
stdin_open : true
depends_on :
- postgresql
networks :
backend :
driver: bridge
您可能希望尝试在
dss graphql
容器中添加环境
部分,并包括-PGPASSWORD:“secret”
另一个选项是创建一个.pgpass
文件,并将其复制到dss graphql
容器中
简而言之,您在postgresql
容器中定义了用户/密码,但似乎没有告诉dss graphql
容器如何登录到数据库,因此似乎需要将其添加为1)环境变量,2)密码文件(.pgpass
),或3)某些dss graphql配置中的参数(我不太熟悉——对不起!)
有关
.pgpass
的更多信息可以在帖子中找到你也可以分享你的docker compose.yml
吗?@richyn更新了docker compose.yml
内容。
POSTGRES_DB=devdb
PGUSER=postgres
PGPASSWORD=secret
POSTGRES_USER=postgres
POSTGRES_PASSWORD=secret
``