docker compose正在另一个目录中运行入口点脚本

docker compose正在另一个目录中运行入口点脚本,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我只是想知道如何在另一个目录中运行docker入口点脚本。比如说, the-service: image: the-service container_name: the-service entrypoint: ./app/the/docker-entrypoint.sh build: ./app/the ports: - 8080:8080 我明白了 错误:对于服务无法启动服务:OCI运行时创建失败:container\u linux.go:348:

我只是想知道如何在另一个目录中运行docker入口点脚本。比如说,

the-service:
   image: the-service
   container_name: the-service
   entrypoint: ./app/the/docker-entrypoint.sh 
   build: ./app/the
   ports:
     - 8080:8080
我明白了
错误:对于服务无法启动服务:OCI运行时创建失败:container\u linux.go:348:启动容器进程导致“exec:\”/app/the service/docker entrypoint.sh\”:stat./app/the service/docker-entrypoint.sh:没有这样的文件或目录:未知
错误:在启动项目时遇到错误。

docker compose版本是2.1。 那么,运行此脚本的正确方法是什么


谢谢

尝试使用
WORKDIR
选项将当前工作目录设置到docker文件中应用程序的位置
我想我已经弄明白了。 您正在使用build选项,以便docker映像可以位于docker compose项目中。 这有点不标准,但完全可以。 使用图像更标准

无论docker-compose.yml文件中的位置如何,entrypoint都会在生成后执行。 当我们写入入口点时,我们正在写入对映像中文件的引用,而不是本地文件系统

您可能应该如下编辑您的.app/the/Dockerfile 添加“复制docker-entrypoint.sh/” 添加“ENTRYPOINT[“sh”,“/docker ENTRYPOINT.sh”]

然后,您可以通过删除“entrypoint:./app/the/docker entrypoint.sh”来编辑docker-compose.yml


旧答案

在不亲自测试的情况下,我会假设这些方法会起作用:

  • 正如@B0rn2C0de建议的那样,适当设置workdir
  • 或者,使用WORKDIR实际所在的相对路径
  • 或者,使用绝对路径

  • 我可以在docker compose中设置workdir吗?entrypoint将在构建之前运行。因此我认为在docker文件中设置workdir不起作用@B0rn2C0de@yuzir-您的评论让我感到困惑。显示了如何在docker compose中设置workdir。无论docker compose中的顺序如何,entrypoint都会在生成后运行。yml@yuzir-我想我已经猜到了但是你正在犯的错误。请参阅对我答案的编辑。你是对的!谢谢。它成功了。对于不清楚的评论,很抱歉。