似乎当我的Dockerfile使用ENTRYPOINT脚本时,其基本镜像的CMD被忽略了。谁能告诉我为什么和/或在文档中这种行为的解释吗?

这是一个Dockerfile扩展了官方php:7.0-fpm镜像(使用 CMD ["php-fpm"] )的示例。在入口点脚本中,我希望$@变量包含字符串php-fpm,但它为空。

marc@imac-marc:/opt/php-docker$ cat Dockerfile-php
FROM php:7.0-fpm
COPY utils/entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

marc@imac-marc:/opt/php-docker$ cat utils/entrypoint.sh
#!/usr/bin/env bash
echo "CMD = $@"

marc@imac-marc:/opt/php-docker$ docker build -t me:myImage -f Dockerfile-php .
Sending build context to Docker daemon   276 kB
Step 1 : FROM php:7.0-fpm
 ---> d66add11c05d
Step 2 : COPY utils/entrypoint.sh /usr/local/bin/
 ---> a62ef60a202b
Removing intermediate container 20bd7782844e
Step 3 : RUN chmod +x /usr/local/bin/entrypoint.sh
 ---> Running in 27af4ffbd6c0
 ---> 77fba35c804d
Removing intermediate container 27af4ffbd6c0
Step 4 : ENTRYPOINT /usr/local/bin/entrypoint.sh
 ---> Running in 6779b16542ec
 ---> 326970218669
Removing intermediate container 6779b16542ec
Successfully built 326970218669

marc@imac-marc:/opt/php-docker$ docker run me:myImage
CMD =

如果我将CMD ["php-fpm"]添加到我的Dockerfile中,它将按预期工作。

最佳答案

请参阅https://github.com/moby/moby/issues/5147-它说明了何时以及为什么实现此行为。

关于docker - 在Dockerfile中使用ENTRYPOINT会使基本镜像的CMD被忽略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38893747/

10-16 16:28