![Docker WORKDIR путаница](https://rvso.com/image/756267/Docker%20WORKDIR%20%D0%BF%D1%83%D1%82%D0%B0%D0%BD%D0%B8%D1%86%D0%B0.png)
Я новичок в Docker и у меня есть очень простой Dockerfile для практических целей.
FROM debian:latest
WORKDIR /init
COPY hello_world.sh .
RUN hello_world.sh
CMD [ "/bin/bash" ]
После попытки построить изображение я получаю следующее:
Sending build context to Docker daemon 3.072kB
Step 1/5 : FROM debian:latest
---> ee11c54e6bb7
Step 2/5 : WORKDIR /init
---> Using cache
---> 605ee1ff67e9
Step 3/5 : COPY hello_world.sh .
---> Using cache
---> f544ee4e93b8
Step 4/5 : RUN hello_world.sh
---> Running in c4cbd6389bc2
/bin/sh: 1: hello_world.sh: not found
The command '/bin/sh -c hello_world.sh' returned a non-zero code: 127
Если я изменю директиву RUN и укажу абсолютный путь/init/hello_world.sh, работает хорошо. Судя по описанию, Dockerfile выше должен работать.
Из справочника Dockerfile:
The WORKDIR instruction sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow it in the Dockerfile.
Что я неправильно понял?
решение1
Попробуйте RUN ./hello_world.sh
. Тот факт, чтоWORKDIRиспользуется RUN Detective, не означает, что автоматически в PATH. Это все еще толькорабочий каталоггде выполняется процесс.