我将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 .
您可以使用两个不同的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 .