如何在Dockerfile中为ENTRYPOINT指定工作目录

时间:2017-08-16 19:07:44

标签: docker dockerfile

Docker镜像(基于Windows)包含C:\App的应用程序目录。在该目录中包含多个子文件夹和文件,包括名为process.bat的批处理文件。 Dockerfile(用于构建图像)的结尾如下:

ENTRYPOINT [ "C:\\App\\process.bat" ]

当我使用命令docker run company/app实例化此图像时,批处理文件会运行,但在引用C:\App下的其他文件时会失败。从本质上讲,工作目录仍然是Docker容器入口点的C:\

有没有办法在Dockerfile中设置工作目录?确实存在几种替代方案:

  • -w C:\App添加到泊坞窗运行
  • 在批处理文件中,我可以在开头cd /D C:\App
  • 添加一行

但是有没有办法在Dockerfile中指定工作目录?

2 个答案:

答案 0 :(得分:20)

WORKDIR /App是您可以在dockerfile中使用的命令来更改工作目录。

答案 1 :(得分:4)

如果/App是已装入的卷,那么您应在VOLUME /App之前指定WORKDIR以将其与ENTRYPOINT一起使用,否则ENTRYPOINT无法看到它:

VOLUME ["/App"]
WORKDIR /App
ENTRYPOINT ["sh", "start.sh"]

start.sh位于/App目录中。