我试图在我的 Dockerfile
的构建过程中运行一个脚本,但它似乎不起作用。
我试过这样:
FROM php:7-fpm
ADD bootstrap.sh /
ENTRYPOINT ["/bin/bash", "/bootstrap.sh"]
也是这样:
FROM php:7-fpm
ADD bootstrap.sh /
RUN bash -c "/bootstrap.sh"
并且还通过执行我正在运行的容器:
docker exec symfony /bin/bash -c "/bootstrap.sh"
似乎没有任何效果。
你知道怎么做吗?
原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议
RUN
和ENTRYPOINT
是执行脚本的两种不同方式。RUN
表示它创建一个中间容器,运行脚本并将该容器的新状态冻结在一个新的中间映像中。该脚本将不会在此之后运行:您的最终图像应该反映该脚本的结果。ENTRYPOINT
表示您的图像(尚未执行脚本)将创建一个容器并运行该脚本。在这两种情况下,都需要添加脚本,并且
RUN chmod +x /bootstrap.sh
是个好主意。它也应该以 shebang 开头(如
#!/bin/sh
)Considering your script (
bootstrap.sh
: a couple ofgit config --global
commands), it would be best toRUN
that script once in yourDockerfile
,但请确保使用正确的用户(全局git config
文件是%HOME%/.gitconfig
,默认情况下是/root
一个)添加到您的 Dockerfile:
然后,在运行容器时,检查
/root/.gitconfig
的内容以确认脚本已运行。