Dockerfile 中的 RUN 和 docker-compose.yml 文件中的命令之间的区别

rvr*_*rbk 4 docker dockerfile docker-compose

这个问题一直困扰着我,因为我想遵循最佳实践,并且由于不知道每个命令的用途,我可能会犯架构错误。RUN那么,有人可以向我解释何时在 a 中使用命令Dockerfilecommanddocker-compose.yml文件中使用指令吗?

据我了解,Dockerfile应该包含构建图像的指令,因此通过逻辑命令(例如迁移数据库)应该位于此处。文件docker-compose.yml包含构建环境的说明。但我感到困惑的是,为什么似乎有选项可以在两个文件中放置运行命令的指令。

acr*_*ran 5

Dockerfile是关于如何使用例如构建新映像的docker build收据,同时docker-compose用于编排启动(多个)容器

RUNan 中的指令在Dockerfile映像的构建阶段执行,并将其结果提交给映像。commanda 中的属性对应docker-compose.yml于a 中的CMD指令Dockerfile以及 的可选命令参数,并指定在基于给定镜像启动docker run新容器时要执行的命令。

另请参阅:Dockerfile 中 RUN 和 CMD 的区别