WORKDIR не создает каталог

#docker

#docker

Вопрос:

Можете ли вы сказать мне, почему каталог не был создан в контейнере?

Вот файл DockerFile

 FROM node:16.13-alpine AS base

WORKDIR /usr/app/test/

RUN npm config set unsafe-perm true

COPY ./test/ .

FROM nginx:1.20-alpine
LABEL version="1.0"

COPY nginx.conf /etc/nginx/nginx.conf

WORKDIR /usr/share/nginx/html

COPY ./test/dist/my-app/ .
 

Я создал образ, запустил его, захожу в него, но там нет каталога

 /usr/app/test
 

При создании образа ошибок нет:

 Step 1/9 : FROM node:16.13-alpine AS base
 ---> 710c8aa630d5
Step 2/9 : WORKDIR /usr/app/test/
 ---> Running in dbe3994e667a
Removing intermediate container dbe3994e667a
 ---> 54b36120290d
Step 3/9 : RUN npm config set unsafe-perm true
 ---> Running in e301f90c084f
Removing intermediate container e301f90c084f
 ---> ca6dc8541ba5
Step 4/9 : COPY ./test/ .
 ---> e00bf919a630
 

Вот что находится в контейнере:

введите описание изображения здесь

Ответ №1:

Ваш Dockerfile определяет многоступенчатую сборку, и то, что вы видите, является ожидаемым поведением.

Все, что предшествует второму FROM , поэтому в этом случае FROM nginx:1.20-alpine отбрасывается в конечном изображении, если оно не скопировано.

Если вы хотите, чтобы первое WORKDIR сохранялось в конечном изображении, вам необходимо явно скопировать:

 FROM node:16.13-alpine AS base
WORKDIR /usr/app/test/

FROM nginx:1.20-alpine
COPY --from=0 /usr/app/test /usr/app/test
WORKDIR /usr/share/nginx/html