在Dockerfile.template中运行Django迁移似乎会跳过,直接运行服务器

在Dockerfile.template中运行Django迁移似乎会跳过,直接运行服务器,docker,Docker,这是我的Dockerfile.template ... CMD python3 manage.py makemigrations --noinput CMD python3 manage.py migrate --noinput CMD python3 manage.py runserver 0.0.0.0:8000 ... 但由于某些原因,应用程序直接进入服务 我正在运行docker容器,如下所示: docker run -t --rm -p 8000:8000 {myimage} 我发现

这是我的Dockerfile.template

...
CMD python3 manage.py makemigrations --noinput
CMD python3 manage.py migrate --noinput
CMD python3 manage.py runserver 0.0.0.0:8000
...
但由于某些原因,应用程序直接进入服务

我正在运行docker容器,如下所示:

docker run -t --rm -p 8000:8000 {myimage}
我发现这种行为很奇怪,所以我决定跳进去

docker exec -it d2836730ae55 bash
python3 manage.py makemigrations --noinput
python3 manage.py migrate --noinput

这运行得很好,因此似乎
docker run
不知何故跳过了其他命令。我做错了什么?

一个容器只有一个命令,并且除了最后一个命令外,每个
CMD
都被忽略。讨论运行迁移的两种主要方法(在单独的容器中,或将
CMD
作为shell脚本)。啊,这很有意义。