How to specify working directory for ENTRYPOINT in

2020-06-01 03:51发布

The Docker image (Windows-based) includes an application directory at C:\App. Inside that directory reside several sub-folders and files, including a batch file called process.bat. The Dockerfile (used to build the image) ends like this:

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

When I instantiate this image using the command: docker run company/app, the batch file runs, but it fails at the point where other files under C:\App are referenced. Essentially, the working directory is still C:\ from the Docker container's entry-point.

Is there a way to set the working directory within the Dockerfile? Couple of alternatives do exist:

  • Add -w C:\App to the docker run
  • In the batch file, I can add a line at the beginning cd /D C:\App

But is there a way to specify the working directory in the Dockerfile?

2条回答
迷人小祖宗
2楼-- · 2020-06-01 04:29

If /App is a mounted volume then you should specify VOLUME /App before WORKDIR to use it with ENTRYPOINT, otherwise it does not be seen by ENTRYPOINT:

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

Which start.sh is within /App directory.

查看更多
beautiful°
3楼-- · 2020-06-01 04:39

WORKDIR /App is a command you can use in your dockerfile to change the working directory.

查看更多
登录 后发表回答