我使用基于 Django 的应用程序创建了一个容器,并使用 PostgreSQL 创建了另一个容器,它们以网络方式相互链接,使用docker-compose
.
如果我makemigrations
在我的应用程序 docker 容器(链接到 PostgreSQL 容器)中运行 bash 会话的外部,如下所示:
python manage.py makemigrations myapp
我得到以下异常:
django.db.utils.OperationalError: could not
translate host name "db" to address: nodename
nor servname provided, or not known
这是有道理的:我在容器执行上下文之外没有任何 PostgreSQL 实例(和配置)。
根据我从过去使用其他语言的经验以及类似这篇文章的其他帖子中了解到的情况,我希望运行makemigrations
并提交它。
这将是创建和提交迁移文件的最佳方法:
- 我是否应该尝试公开 PostgreSQL 容器并将其更改
settings.py
DATABASE
为能够makemigrations
从本地 bash 会话运行命令? - 我应该将容器内部执行的结果复制
makemigrations
到我的存储库中然后提交吗? - 我是否应该担心不提交迁移,而是使用
docker-entrypoint.sh
方法(示例)制作并运行它们? - 还有其他选择吗?