我想为数据库创建一个Dockerfile。在这个Dockerfile中,我想添加转储和恢复。然后我构建一个图像,每次运行一个容器,我都会恢复数据库
这是我的Dockerfile
FROM postgres:9.5.8
WORKDIR /home/
COPY my_dump.sql my_dump.sql
EXPOSE 5432 5432
RUN psql -f my_dump.sql postgres
然后我执行
$ docker build -t my_postgres_db .
我得到了
Step 5/5 : RUN psql -f my_dump.sql postgres
---> Running in 70f7b511cc7c
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"?
答案 0 :(得分:0)
这是一个很好的小脚本,用于执行此操作并从https://docs.docker.com/compose/startup-order/
更改您需要做的就是创建脚本
#!/bin/bash
# wait-for-postgres.sh
set -e
host="$1"
shift
until psql -h "$host" -U "postgres" -c '\q'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - you can execute commands now"
然后将其添加到docker文件
RUN /wait-for-postgres.sh host
然后在那之后运行命令