如何用fig恢复postgres数据库?

时间:2014-12-10 01:43:32

标签: postgresql ubuntu docker fig

我试图将FIG(http://www.fig.sh/)用于django应用。我无法从转储中重新创建数据库,我尝试:

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

1 个答案:

答案 0 :(得分:0)

运行时

fig run db pg_restore -d DBNAME < backup.sql

postgresd没有运行。您已使用pg_restore命令替换了守护程序的启动。

我建议做这样的事情:

  1. 将backup.sql移至dockerfiles / db / backup.sql
  2. 创建dockerfiles / db / Dockerfile
  3. 将您的fig.yml更改为使用build而不是
  4. 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
    

    现在,当你运行任何fig命令时,你的数据库应该准备好了