我的Dockerfile有一个在ENTRYPOINT上运行的脚本 . 该容器计划在我的代码所在的卷挂载下运行,并且一旦容器启动了卷挂载,它就需要运行几个命令 .
但是从运行容器时得到的错误,我相信在ENTRYPOINT脚本之后发生Docker卷安装 .
一旦容器启动,我确定可以使用docker exec选项运行命令 . 但这使得它更多的运行命令行 . 有没有解决方法,即使使用docker-compose?
Dockerfile :
FROM my-container
WORKDIR /my-mount-dir
ADD startup-script.sh /root/startup-script.sh
ENTRYPOINT ["/root/startup-script.sh"]
Docker Run :
docker run -itd -v / home / user / directory:/ my-mount-dir build-container
Note : startup-script.sh包含应该在挂载的目录文件上运行的命令 .
2 回答
我'm not sure if this is the solution you want but I'一直在使用这个运行命令,它使用cat命令将
script.sh
提供给容器:在这种情况下,脚本在安装完成后运行 . 我确信这一点,因为我已经使用了脚本中已安装卷中的文件 .
我已经看到在我的一些脚本中,它看起来像我的文件系统缓存问题...我在我的docker文件中使用以下hack,它就像一个魅力:
ENTRYPOINT ls /my-mount-dir && /root/startup-script.sh
但是,您不能使用ENTRYPOINT的列表表单