在docker中运行django migrate

Mad*_*bat 5 django docker docker-compose

我正在使用docker构建Python + Django开发环境.我在docker-compose.yml中为web服务器(nginx)和数据库(postgres)容器定义了Dockerfile文件和服务,并使用uwsgi运行我们的app.由于这是一个开发环境,我正在从主机系统安装应用程序代码,因此我可以在IDE中轻松编辑它.

我的问题是在哪里/如何运行migrate命令.

如果您不了解Django,则migrate命令会创建数据库结构,然后根据项目的需要对其进行更改.我已经看到人们作为compose命令指令的一部分运行迁移command: python manage.py migrate && uwsgi --ini app.ini,但我不希望迁移在每次容器重启时运行.我只希望它在我创建容器时运行一次,除非我重建,否则永远不会再运行.

我在哪里/怎么做?

编辑:组合团队现在有一个未解决的问题.运气好的话,compose支持一次性命令容器.https://github.com/docker/compose/issues/1896

Gri*_*fin 0

您无法使用,RUN因为正如您在评论中提到的,您的源是在容器运行期间安装的。

你不能使用CMD其中任何一个,因为您不希望它在每次重新启动容器时都运行。

我建议docker exec在运行容器后手动使用。由于我上面给出的两个原因,我不认为有一种方法可以在 adockerfile或内部自动执行此操作。docker-compose