Python 向 postgres 添加数据的脚本 docker 容器运行多次
Python script to add data to postgres docker container runs multiple times
我正在尝试寻找一种使用初始数据填充数据库的简单应用程序的好方法。我使用 realpython.com 中的教程作为起点。然后我 运行 在创建数据库后添加一个简单的 python 脚本来添加一个条目,但是当我这样做时,即使我只调用 script once. 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"
它引用了两个不同的 Dockerfile:
构建 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
编辑2:
有些人认为数据会持续数 运行 秒,这也是我最初的想法。事实并非如此,因为我在测试前通过 docker rm 删除了所有活动的 docker 容器。 "extra" 数据的数量也不一致,在我到目前为止 运行 的几个测试中随机从 3-6 不等。
事实证明,这是一个与在 docker-compose/Dockerfile 中使用 "restart: always" 指令在容器上使用 运行 命令有关的错误。为了在不修复错误的情况下解决此问题,我从 Web 容器中删除了 "restart: always"。
我正在尝试寻找一种使用初始数据填充数据库的简单应用程序的好方法。我使用 realpython.com 中的教程作为起点。然后我 运行 在创建数据库后添加一个简单的 python 脚本来添加一个条目,但是当我这样做时,即使我只调用 script once. 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"
它引用了两个不同的 Dockerfile:
构建 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
编辑2:
有些人认为数据会持续数 运行 秒,这也是我最初的想法。事实并非如此,因为我在测试前通过 docker rm 删除了所有活动的 docker 容器。 "extra" 数据的数量也不一致,在我到目前为止 运行 的几个测试中随机从 3-6 不等。
事实证明,这是一个与在 docker-compose/Dockerfile 中使用 "restart: always" 指令在容器上使用 运行 命令有关的错误。为了在不修复错误的情况下解决此问题,我从 Web 容器中删除了 "restart: always"。