linux - Docker ENTRYPOINT在卷挂载后运行

标签 linux docker docker-compose dockerfile

我的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/

相关文章:

linux - 如何从 shell 脚本中的命令行参数中检索值

linux - 从 Vim 内部如何替换所有行中第二次出现的模式?

docker - Docker-Compose 上的 InfluxDB 无法读取 SSL 证书文件

java - 为 Postgres 安装 JDBC 时遇到问题

python - Apache Airflow 无法连接到本地主机数据库

docker - 在 Kubernetes 中运行私有(private) docker 注册表时拉取图像时出现问题

docker - '--disable-dev-shm-usage' 不能解决 Docker 中的 Chrome 崩溃问题

ruby-on-rails - 将 Resque-Scheduler 与 Docker-Compose 结合使用 - 连接到本地主机上的 Redis 时出错 :6379

networking - 从 docker 容器运行 docker build 时主机名解析失败

c++ - 什么是 C++ 应用程序的最佳多线程应用程序调试器