为什么我的 Dockerfile CMD 不起作用?

dav*_*vid 0 linux bash docker dockerfile

所以在我的 Dockerfile 的末尾我有这个:

WORKDIR /home
CMD django-admin startproject whattt
CMD /bin/bash
Run Code Online (Sandbox Code Playgroud)

当我创建图像然后运行容器时,一切都按预期工作,没有错误,Docker 日志中也没有错误。但是,仍然有一些我似乎无法弄清楚的问题。

第一个也是最重要的问题是 CMD django-admin startproject 实际上并没有创建任何项目。运行容器后,我可以手动运行 django-admin startproject 并且它按预期工作。但是,当我从 Dockerfile 将其作为 CMD 发出时,不会创建任何项目。

第二个问题是在 django-admin 行之后,我用 /bin/bash 放置了第二个 CMD,所以当我运行容器时,它会打开一个 shell(这样我就可以进去检查我的 django 项目是否已创建)。这会与之前的 django-admin 行产生问题或冲突吗?如果我删除这一行,那么当我运行容器时,我无法打开外壳并检查我的 django 项目是否在那里?

任何帮助将不胜感激,谢谢。

Hao*_*ang 6

“一个 Dockerfile 中只能有一个 CMD 指令。如果您列出多个 CMD,则只有最后一个 CMD 才会生效。” 通过Dockerfile 参考。所以你的第一个 CMD 不会生效。

如果要执行容器的 bash,请尝试docker exec命令,文档中提供了示例命令,以便您可以遵循。