gpt4 book ai didi

docker - 如何为开发和生产配置不同的 dockerfile

转载 作者:IT老高 更新时间:2023-10-28 12:40:54 24 4
gpt4 key购买 nike

我使用 docker 进行 laravel 项目的开发和生产。对于开发和生产,我的 dockerfile 略有不同。例如,我在开发环境中将本地目录挂载到 docker 容器,这样我就不需要为代码的每次更改都进行 docker build。

由于挂载的目录只有在运行 docker 容器时才可用,所以我不能在 dockerfile 中放置“composer install”或“npm install”等命令进行开发。

目前我正在管理两个 docker 文件,有什么方法可以使用单个 docker 文件执行此操作,并通过发送参数来决定在执行 docker build 时运行哪些命令。

我想要实现的是

在 docker 文件中

...
IF PROD THEN RUN composer install
...

在 docker 构建期间

docker build [PROD] -t mytag .

最佳答案

作为一种最佳实践,您应该尝试使用一个 Dockerfile 来避免不同环境之间的意外错误。但是,您可能有一个无法做到这一点的用例。

Dockerfile 语法不够丰富,无法支持这种情况,但是您可以使用 shell 脚本来实现。

创建一个名为 install.sh 的 shell 脚本,它执行以下操作:

if [ ${ENV} = "DEV" ]; then 
composer install
else
npm install
fi

在你的 Dockerfile 中添加这个脚本,然后在构建时执行它

...
COPY install.sh install.sh
RUN chmod u+x install.sh && ./install.sh
...

构建时传递一个构建参数来指定环境,例如:

docker build --build-arg "ENV=PROD" ...

关于docker - 如何为开发和生产配置不同的 dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46440909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com