#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