docker - Docker - 在 $PATH 中找不到可执行文件
问题描述
在我的 Ubuntu 服务器中,我有以下目录结构:/home/docker/groovy。在这个位置,我有简单的 groovy 文件。在 Docker 上,它正在运行容器groovy_repo_1。
进入 groovy 目录后,我想在容器上执行这样的脚本:
docker exec groovy_repo_1 docker.groovy
输出:
rpc error: code = 2 desc = oci runtime error: exec failed:
container_linux.go:247: starting container process caused "exec:
\"docker.groovy\": executable file not found in $PATH"
为什么会这样?
解决方案
Docker 使用长寿命的不可变图像和短寿命的容器。如果您有要运行的脚本或任何其他类型的程序,最佳实践通常是将其打包到映像中,然后从其运行容器。已经有一个标准的groovy 映像,因此您的 Dockerfile 可以是基本的:
FROM groovy:2.6
RUN mkdir /home/groovy/scripts
WORKDIR /home/groovy/scripts
COPY docker.groovy .
CMD ["groovy", "docker.groovy"]
您可以在本地开发和测试您的应用程序,然后使用 Docker 进行部署。尤其是如果您正在查看像docker -swarm或kubernetes这样的多主机部署解决方案,那么重要的是映像是独立的并且其中包含脚本。
推荐阅读
- node.js - 找不到 NodeJS App Express 路由的 Nginx 404
- android - 未解决的参考:MasterKey
- python - Python/Pandas 在 Dataframe 中搜索数据
- excel - Excel中指数和的反转
- c# - 委托方法未在 UI 线程上运行
- python - 尽管有可用内存,但执行 python 文件会使硬件冻结
- python - sqlalchemy.exc.InvalidRequestError:初始化映射器映射类时
- haskell - 使用 Hspec 编写嵌套断言
- kubernetes - Gitlab Kubernetes 应用程序的自定义 DNS
- javascript - 有人可以解释一下这个与 Js 回调函数有关的代码吗?我对这段代码很困惑,可能是因为我是初学者。问题是: