我有一个bash文件,应该将postgres docker容器上线,然后运行一个.sql
文件来创建数据库。但是它报错了。
psql: error: provision-db.sql: No such file or directory
我已经检查了路径,文件存在于这个Bash脚本的同一级别。以下是我的Bash文件的内容。
#!/usr/bin/env bash
docker-compose up -d db
# Ensure the Postgres server is online and usable
until docker exec -i boohoo.postgres pg_isready --host="${POSTGRES_HOST}" --username="${POSTGRES_USER}"
do
echo "."
sleep 1
done
docker exec -i boohoo.postgres psql -h "${POSTGRES_HOST}" -U "${POSTGRES_USER}" -a -q -f provision-db.sql
这是 provision-db.sql
文件。
DROP DATABASE "boo-hoo";
CREATE DATABASE "boo-hoo";
GRANT ALL PRIVILEGES ON DATABASE "boo-hoo" TO postgres;
这是
docker-compose.yml
文件的一部分。version: '3.3'
services:
db:
container_name: boohoo.postgres
hostname: postgres.boohoo
image: postgres
ports:
- "15432:5432"
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
psql
而不需要docker exec
? - David Mazeprovision-db.sql
文件存在于您的主机而不是容器中,那么使用以下命令即可将该文件导入boohoo.postgres
容器内的 PostgreSQL 数据库:cat provision-db.sql | docker exec -i boohoo.postgres psql -h "${POSTGRES_HOST}" -U "${POSTGRES_USER}" -a -q -f -
。 - ckasererdocker-compose.yml
文件中的ports:
行中使用第一个端口号,并使用-h 127.0.0.1
指向当前主机。 - David Mazepsql -h 127.0.0.1 -p 15432 -U postgres -a -q -f provision-db.sql
。它说服务器是否在运行并接受端口15432上的TCP/IP连接。 - Sadan A.