如何用fig恢复postgres数据库?
我试图使用图( http://www.fig.sh/ )的Django应用程序。 我不能从转储重新创build数据库,我尝试:
fig run db pg_restore -d DBNAME < backup.sql
并得到:
socket.error:[Errno 104]由对等方重置连接
但是这个运行(仍然没有看到数据库中的表):
fig run db pg_restore < backup.sql
这是dockerfile:
FROM python:3.4 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ ADD backup.sql /code/ RUN pip install -r requirements.txt RUN pg_restore -d postgres backup.sql ADD . /code/
和fig.yml:
db: image: postgres ports: - 5432 web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" links: - db
当你跑步
fig run db pg_restore -d DBNAME < backup.sql
postgresd没有运行。 您已经用pg_restore命令replace了守护进程的启动。
我会build议做这样的事情:
- 将backup.sql移动到dockerfiles / db / backup.sql
- 创build一个dockerfiles / db / Dockerfile
- 改变你的fig.yml来代替db使用build
Dockerfile
FROM postgres ADD . /files WORKDIR /files RUN /etc/init.d/postgresql start && \ pg_restore -d DBNAME < backup.sql && \ /etc/init.d/postgresql stop
fig.yml
db: build: dockerfiles/db
现在,当你运行任何无花果命令时,你的数据库应该已经准备好了