[英]Python script to add data to postgres docker container runs multiple times
我正在尝试寻找一种很好的方法来用简单应用程序的初始数据填充数据库。 我使用realpython.com的教程作为起点。 然后,在创建数据库以添加单个条目之后,我运行一个简单的python脚本,但是当我这样做时,即使我只调用一次脚本 ,数据也会被多次添加。 结果
填充脚本(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"
它引用了两个不同的Dockerfile:
Dockerfile#1构建App容器,为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。
事实证明,这是与在docker-compose / Dockerfile中使用“ restart:always”指令对容器使用run命令有关的错误。 为了解决此问题而没有错误修复,我从Web容器中删除了“重新启动:始终”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.