我使用以下Dockerfile构建了一个图像:
#!/bin/bash
set -e
echo "STARTING PHP FPM, CMD $@"
docker-php-entrypoint "$@"
它使用自定义入口点,它是以下bash脚本:
CMD ["php-fpm"]
其Dockerfile中定义的父图像的命令是docker run
现在我希望这个命令能够在我的图像中继承。但是,当我运行图像时,命令为空。以下是CMD ["php-fpm"]
命令的输出:
启动PHP FPM,CMD
但是,如果我将Dockerfile
复制到自定义CMD
的末尾,则输出为
启动PHP FPM,CMD php-fpm
[01-Nov-2017 20:04:02]注意:fpm正在运行,pid 7
[01-Nov-2017 20:04:02]注意:准备好处理连接
为什么父母的{{1}}指令没有继承?
答案 0 :(得分:10)
这种行为试图更直观,但我同意它有点令人困惑。你看到了original issue here。问题在于,定义子图像中ENTRYPOINT
的大多数人不再需要父图像中的CMD
。
根据当前行为,如果您在子图像中定义ENTRYPOINT
,则父图像中的CMD
将为空,因此您需要重新定义它,如果你需要设置它。