我的Dockerfile有一个可以在ENTRYPOINT上运行的脚本。
计划将容器与我的代码所在的卷安装一起运行,一旦容器通过卷安装启动,它就需要运行几个命令。
但是从运行容器时遇到的错误来看,我相信Docker卷挂载发生在ENTRYPOINT脚本之后。
一旦容器启动,我确定可以使用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运行:
docker运行-itd -v/home/user/directory:/my-mount-dir build-container
注意: startup-script.sh包含应该在已挂载的目录文件上运行的命令。
最佳答案
我不确定这是否是您想要的解决方案,但我一直在使用此运行命令,该命令使用cat命令将script.sh
提供给容器:
docker run -it --name=some_name --rm \
-v "host/path:/path/inside/container" \
image_name \
/bin/bash -c "$(cat ./script.sh)"
在这种情况下,脚本将在安装完成后运行。我可以肯定这一点,因为我已经在脚本中使用了已装入卷中的文件。
关于linux - Docker ENTRYPOINT在卷挂载后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45027588/