Что такое рабочий каталог / app для Dockerfile? - PullRequest
1 голос
/ 11 марта 2019

В учебном пособии по докертуре , часть 2 , есть один файл Dockerfile.Он предлагает добавить следующие строки:

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

Что такое / app, и почему это необходимый шаг?

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

WORKDIR - хорошая практика, поскольку вы можете установить каталог в качестве основного каталога, а затем работать с ним с помощью команд COPY, ENTRYPOINT, CMD, поскольку они будут выполнять указание на этот путь.

Докерская документация: https://docs.docker.com/engine/reference/builder/

Инструкция WORKDIR устанавливает рабочий каталог для любых инструкций RUN, CMD, ENTRYPOINT, COPY и ADD, следующих за ним в Dockerfile. Если WORKDIR не существует, он будет создан, даже если он не используется ни в одной из последующих инструкций Dockerfile.

Инструкция WORKDIR может использоваться несколько раз в Dockerfile. Если указан относительный путь, он будет относительно пути предыдущей инструкции WORKDIR.

Пример Dockerfile:

FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]

Был создан alpine node.js, рабочий каталог - / app, затем все файлы скопированы в / app

Наконец, команда запуска npm запускается в папке / app внутри контейнера.

Вы должны выполнить следующую команду, если у вас есть sh или bash tty:

docker exec -it <container-id> sh

или

docker exec -it <container-id> bash

После этого вы можете выполнить команду ls, и вы увидите папку WORKDIR.

Я надеюсь, что это может помочь вам

2 голосов
/ 11 марта 2019

Вам нужно объявить рабочий каталог и переместить в него свой код, потому что ваш код должен жить где-то .В противном случае ваш код не будет представлен и ваше приложение не будет запущено.Затем, когда используются такие команды, как RUN, CMD, ENTRYPOINT, COPY и ADD, они выполняются в контексте WORKDIR.

/app - произвольный выбор рабочего каталога.Вы можете использовать все, что вам нравится (foo, bar или baz), но app хорошо, так как он информативен и широко используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...