Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql docker entrypoint.sh脚本中的psql登录问题_Postgresql_Docker_Docker Compose_Alpine - Fatal编程技术网

Postgresql docker entrypoint.sh脚本中的psql登录问题

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

我有两个集装箱。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 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
``