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

时间:2018-06-03 22:44:52

标签: docker docker-compose dockerfile

我只是想知道如何在另一个目录中运行docker-entrypoint脚本。例如,

the-service:
   image: the-service
   container_name: the-service
   entrypoint: ./app/the/docker-entrypoint.sh 
   build: ./app/the
   ports:
     - 8080:8080
我得到了 ERROR: for the-service Cannot start service the-service: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./app/the-service/docker-entrypoint.sh\": stat ./app/the-service/docker-entrypoint.sh: no such file or directory": unknown ERROR: Encountered errors while bringing up the project.

docker-compose版本是2.1。 那么运行这个脚本的正确方法是什么?

由于

2 个答案:

答案 0 :(得分:1)

我想我已经弄明白了。 您正在使用构建选项,以便docker镜像可以存在于docker-compose项目中。 这有点不标准,但完全没问题。 使用图像更为标准。

无论docker-compose.yml文件中的位置如何,都会在构建后执行入口点。 当我们编写入口点时,我们正在写入图像中的文件而不是本地文件系统。

您应该按如下方式编辑.app / the / Dockerfile 添加“COPY docker-entrypoint.sh /” 添加“ENTRYPOINT [”sh“,”/ docker-entrypoint.sh“]

然后你可以通过删除“入口点:./ app / the / docker-entrypoint.sh”来编辑你的docker-compose.yml

老答案

如果不自行测试,我会认为这些可行:

  1. 由于@ B0rn2C0de建议正确设置workdir。
  2. 或者,使用WORKDIR实际所在的相对路径
  3. 或者,使用绝对路径。

答案 1 :(得分:0)

尝试使用{{1}}选项将当前工作目录设置为泊坞窗文件中应用的位置 https://docs.docker.com/engine/reference/builder/#workdir