一尘不染

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

docker

我将docker用于laravel项目的开发和生产。我用于开发和生产的dockerfile略有不同。例如,我在开发环境中将本地目录安装到docker容器中,因此我不需要为代码中的每个更改进行docker构建。

由于挂载目录仅在运行docker容器时可用,因此无法在开发文件中将诸如“ composer install”或“ npm
install”之类的命令放入dockerfile中。

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

我想要实现的是

在docker文件中

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

在Docker构建期间

docker build [PROD] -t mytag .

阅读 651

收藏
2020-06-17

共1个答案

一尘不染

您可以使用两个不同的Dockerfile。

# ./Dockerfile (non production)
FROM foo/bar
MAINTAINER ...

# ....

还有第二个:

# ./Dockerfile.production
FROM foo/bar
MAINTAINER ...

RUN composer install

在调用build命令时,您可以告诉它应该使用哪个文件:

$> docker build -t mytag .
$> docker build -t mytag-production -f Dockerfile.production .
2020-06-17