Я в Docker Desktop для Windows. Я пытаюсь использовать docker-compose в качестве контейнера сборки, где он собирает мой код, а затем код находится в моей локальной папке сборки. Процессы сборки определенно успешны;когда я exec
в свой контейнер, файлы там. Однако с моей локальной папкой ничего не происходит - папка build
не создается.
docker-compose.yml
version: '3'
services:
front_end_build:
image: webapp-build
build:
context: .
dockerfile: Dockerfile
ports:
- 5000:5000
volumes:
- "./build:/srv/build"
Dockerfile
FROM node:8.10.0-alpine
EXPOSE 5000
# add files from local to container
ADD . /srv
# navigate to the directory
WORKDIR /srv
# install dependencies
RUN npm install --pure-lockfile --silent
# build code (to-do: get this code somewhere where we can use it)
RUN npm run build
# install 'serve' and launch server.
# note: this is just to keep container running
# (so we can exec into it and check for the files).
# once we know that everything is working, we should delete this.
RUN npx serve -s -l tcp://0.0.0.0:5000 build
Я такжепопытался удалить последнюю строку, которая обслуживает папку. Затем я действительно получил папку для сборки, но эта папка была пуста.
ОБНОВЛЕНИЕ: Я также пробовал многоэтапную сборку:
FROM node:12.13.0-alpine AS builder
WORKDIR /app
COPY . .
RUN yarn
RUN yarn run build
FROM node:12.13.0-alpine
RUN yarn global add serve
WORKDIR /app
COPY --from=builder /app/build .
CMD ["serve", "-p", "80", "-s", "."]
Когда мои тома не установлены(или настроены, скажем, на какой-нибудь несуществующий исходный каталог, например ./build:/nonexistent
), приложение обслуживается правильно, и я получаю пустую папку сборки на локальном компьютере (пустую, поскольку исходная папка не существует).
Однако, когда я установил volumes
на - "./build:/app"
(правильный источник для встроенных файлов), я не только получаю пустую папку build
на моем локальном компьютере, но и папку app
в контейнере. тоже пусто!
Похоже, что происходит что-то вроде 1. Контейнер собран, который строит файлы в сборщике. 2. Файлы копируются из компоновщика во второй контейнер. 3. Тома связаны, а затем, поскольку моя локальная папка build
пуста, связанная папка в контейнере также становится пустой!
Я попытался сбросить учетные данные общих дисков, но безрезультатно.
Как мне это сделать?!?!