【发布时间】:2015-07-03 08:03:53
【问题描述】:
我的docker-compose 文件中有一个主要服务,它使用postgres 的图像,虽然我似乎成功连接到数据库,但我写入的数据并没有保留在容器的生命周期(我所做的基于this tutorial)。
这是我的docker-compose 文件:
main:
build: .
volumes:
- .:/code
links:
- postgresdb
command: python manage.py insert_into_database
environment:
- DEBUG=true
postgresdb:
build: utils/sql/
volumes_from:
- postgresdbdata
ports:
- "5432"
environment:
- DEBUG=true
postgresdbdata:
build: utils/sql/
volumes:
- /var/lib/postgresql
command: true
environment:
- DEBUG=true
这是我用于 postgresdb 和 postgresdbdata 服务的 Dockerfile(本质上是创建数据库并添加用户):
FROM postgres
ADD make-db.sh /docker-entrypoint-initdb.d/
如何在main 服务完成运行后保留数据,以便将来能够使用它(例如当我调用python manage.py retrieve_from_database 之类的东西时)? /var/lib/postgresql 是否是正确的目录,boot2docker 是否可以访问它,因为它显然仅限于 /Users/?
谢谢!
【问题讨论】:
-
Auto-Commit 设置为 true,还是您手动提交更改?
-
sqlalchemy上的自动提交(这就是我正在使用的)?我相信我正在“手动”提交更改——也就是说,通过在主服务中运行python manage.py insert_into_database并将该提交提交给 Postgres(在我开始使用 Docker 之前它已经工作)。这是你的意思吗? -
是的。了解 Postgres,提交失败似乎是最可能的解释。否则我已经超出了我的深度,将退出。
-
感谢您的回答,@Politank-Z!我认为这是我设置 Docker 的方式的问题,因为在我尝试使用 Postgres 之前我没有遇到任何问题......
标签: postgresql sqlalchemy docker boot2docker docker-compose