用于向postgres docker容器添加数据的Python脚本多次运行

时间:2015-09-02 20:27:04

标签: python postgresql docker docker-compose

我正在尝试找到一个用简单应用程序的初始数据填充数据库的好方法。我正在使用来自realpython.com的教程作为起点。然后我在创建数据库之后运行一个简单的python脚本来添加单个条目,但是当我这样做时,数据会被添加多次,即使我只调用script一次。 result

人口脚本(test.py):

   from app import db                                                                                                                                                          
   from models import *                                                                                                                                                        

   t = Post("Hello 3")                                                                                                                                                         
   db.session.add(t)                                                                                                                                                           
   db.session.commit()  

编辑:

这是我用来构建项目的docker-compose文件:

web:
  restart: always
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - /usr/src/app/static
  env_file: .env
  command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app

nginx:
  restart: always
  build: ./nginx/
  ports:
    - "80:80"
  volumes:
    - /www/static
  volumes_from:
    - web
  links:
    - web:web

data:
  restart: always
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  command: "true"

postgres:
  restart: always
  image: postgres:latest
  volumes_from:
    - data
  ports:
    - "5432:5432"

它引用了两个不同的Dockerfiles:

构建App容器的Dockerfile#1是1行:

FROM python:3.4-onbuild

Dockerfile#2用于构建nginx容器

FROM tutum/nginx
RUN rm /etc/nginx/sites-enabled/default
ADD sites-enabled/ /etc/nginx/sites-enabled

EDIT2:

有些人建议数据持续多次运行,这也是我最初的想法。事实并非如此,因为我在测试之前通过docker rm删除了所有活动的docker容器。此外,“额外”数据的数量不一致,在我迄今为止进行的少数测试中随机地从3-6开始。

1 个答案:

答案 0 :(得分:0)

事实证明,这是一个与在docker-compose / Dockerfile中使用“restart:always”指令对容器使用run命令相关的错误。为了在没有错误修复的情况下解决此问题,我从Web容器中删除了“restart:always”。

相关问题:https://github.com/docker/compose/issues/1013