【发布时间】:2018-08-10 06:42:47
【问题描述】:
我想创建一个 shell 脚本,它使用 docker 在 postgres 数据库中自动创建、运行和创建数据库。
我想在 docker 中使用 docker postgres 官方包用于 postgres。
我使用的脚本如下:
docker network create --subnet=172.18.0.0/16 shared_network;
docker kill postgres_linker;
docker rm postgres_linker;
docker run --name postgres_linker -e POSTGRES_PASSWORD=blahblahblah -d --net shared_network --ip 172.18.0.2 postgres:10-alpine;
docker exec -it postgres_linker psql -U postgres -c "create database linker;";
但是当我运行它时,我得到以下输出,而没有创建任何数据库:
Error response from daemon: network with name shared_network already exists
postgres_linker
postgres_linker
b2a9fd4d6e25b62d60adb05c8b6b653a1b55ec7a869c4728677d6289f5cddd63
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
这个日志的第一行是好的,第二行和第三行也是,问题是psql没有在postgres容器上运行命令,尽管我试图运行的命令是正确的。如果我从我的 shell 脚本中单独运行最后一个命令:
docker exec -it postgres_linker psql -U postgres -c "create database linker;";
它不会给我错误!它有效!
为什么会发生这种行为?
【问题讨论】:
标签: database bash postgresql docker containers