首页 文章

Docker ENTRYPOINT在卷装入后运行

提问于
浏览
1

我的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 回答

  • 0

    我'm not sure if this is the solution you want but I'一直在使用这个运行命令,它使用cat命令将 script.sh 提供给容器:

    docker run -it --name=some_name --rm \
      -v "host/path:/path/inside/container" \
      image_name \
      /bin/bash  -c "$(cat ./script.sh)"
    

    在这种情况下,脚本在安装完成后运行 . 我确信这一点,因为我已经使用了脚本中已安装卷中的文件 .

  • 5

    我已经看到在我的一些脚本中,它看起来像我的文件系统缓存问题...我在我的docker文件中使用以下hack,它就像一个魅力:

    ENTRYPOINT ls /my-mount-dir && /root/startup-script.sh

    但是,您不能使用ENTRYPOINT的列表表单

相关问题