我在django-cookiecutter
内运行了一个Digital Ocean Droplet
项目。
当我第一次创建新的Droplet并运行up
时,我的项目使用了一个数据库。
即使我没有更改.env
设置,更新的图片也不会使用原始数据库或遵循我的.env
设置,而是创建一个新的单独数据库(使用新名称和用户)
我第一次跑up
时一切运转良好。我有几个celery
任务运行并创建了一些Django
个对象。当我打开/admin
页面时,我可以在Django
admin。
现在在第一张图片之后:
docker-compose -f production.yml build
docker-compose -f production.yml up
此时,日志将返回身份验证错误(即使POSTGRES
中的.env
设置未更改。
postgres_1 | 2018-06-03 20:45:19.645 UTC [110] FATAL: password authentication failed for user "xxxxxx"
postgres_1 | 2018-06-03 20:45:19.645 UTC [110] DETAIL: Password does not match for user "xxxxxx".
postgres_1 | Connection matched pg_hba.conf line 95: "host all all all md5"
我通过以下步骤检查以下内容:
POSTGRES_USER
和POSTGRES_PASSWORD
未更改docker-compose -f production.yml exec postgres psql -U <my_pg_user>
- 也不会返回POSTGRES_USER
.env
docker-compose -f production.yml exec postgres psql -U postgres
- 确实有效并打开Postgres命令行\list
- 没有按我在.env
现在,当我重新运行我的celery
任务以查看这些任务是否会运行时,它们确实会成功。然后,我可以在使用\list
返回的其中一个数据库中查看这些对象。但是,我的Django /admin
中的这些对象不会显示。为了确认这不是一个缓存问题,我进入Django shell,我可以查询那些新创建的对象。
看来我的docker项目将在初始build
上创建一个数据库服务,然后再构建一个单独的数据库服务。
如何追踪每项服务及其数据量的位置?