当我的Dockerfile使用ENTRYPOINT
脚本时,它的基本图像CMD
被忽略。任何人都可以告诉我为什么和/或文档在哪里解释这个行为?
这是一个扩展官方php:7.0-fpm图像(使用CMD ["php-fpm"]
)的Dockerfile的示例。在入口点脚本中,我希望$@
变量包含字符串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,它会按预期工作。