Python脚本将数据添加到postgres docker容器多次运行

我试图find一个很好的方式来填充一个简单的应用程序的初始数据的数据库。 我正在使用来自realpython.com的教程作为起点。 然后,我创build数据库后,运行一个简单的Python脚本添加一个单一的项目,但是当我这样做的数据被添加多次,即使我只调用脚本一次。 结果

人口脚本(test.py):

from app import db from models import * t = Post("Hello 3") db.session.add(t) db.session.commit() 

编辑:

下面是我用来构build项目的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:

Dockerfile#1构buildApp容器并且是1行:

 FROM python:3.4-onbuild 

Dockerfile#2用于构buildnginx容器

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

EDIT2:

有人build议数据是坚持了好几次,这也是我最初的想法。 事实并非如此,因为我在testing之前通过docker rm删除了所有活动的docker集装箱。 此外,“额外”数据的数量是不一致的,在我迄今为止运行的几个testing中,从3-6中随机测量。

事实certificate,这是一个与在docker-compose / Dockerfile中使用“restart:always”指令的容器上的run命令相关的错误。 为了解决这个问题没有错误修复,我从Web容器中删除了“重新启动:总是”。

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