如何用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议做这样的事情:

  1. 将backup.sql移动到dockerfiles / db / backup.sql
  2. 创build一个dockerfiles / db / Dockerfile
  3. 改变你的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 

现在,当你运行任何无花果命令时,你的数据库应该已经准备好了