1

我正在尝试将 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

这是泊坞窗文件:

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
4

1 回答 1

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 代替

Dockerfile

FROM postgres
ADD . /files
WORKDIR /files
RUN /etc/init.d/postgresql start && \
    pg_restore -d DBNAME < backup.sql && \
    /etc/init.d/postgresql stop

无花果.yml

db:
    build: dockerfiles/db

现在,当您运行任何 fig 命令时,您的数据库应该已准备就绪

于 2014-12-11T01:21:13.190 回答