Существуют ли способы обмена данными между контейнерами. Существует следующий docker -компонентный файл
version: '3'
services:
app_build_prod:
container_name: 'app'
build:
context: ../
dockerfile: docker/Dockerfile
args:
command: build:prod
nginx:
container_name: 'nginx'
image: nginx:alpine
ports:
- "80:80"
depends_on:
- app_build_prod
Содержимое Dockerfile:
FROM node:10-alpine as builder
## Installing missing packages, fixing git self signed certificate issue
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh && \
rm -rf /var/cache/apk/* && \
git config --global http.sslVerify false
## Defigning app directory
WORKDIR /usr/app
## Copying files. Files listed in .dockerignore are omitted
COPY . .
## node_modules are on a separate intermediate image will prevent unnecessary npm installs at each build
RUN npm ci
## Declaring arguments and environment variables. Important to declara env var to consume them on run stage
ARG command=build:prod
ENV command=$command
ENTRYPOINT npm run ${command}
Попробовано с помощью решения @ Robert's , но не удалось заставить его работать - контейнер приложения падает из-за:
EBUSY: ресурс занят или заблокирован, rmdir '/ usr / app / dist
Ошибка: EBUSY: ресурс занят или заблокирован, rmdir' / usr / app / dist '
Я предполагаю, что каталог /usr/app/dist
монтируется с доступом только для чтения, поэтому, когда Angular пытается удалить его перед сборкой, он выдает ошибку.
Необходимо отправить данные в следующем направлении
app_build_prod:/usr/app/dist => nginx:/usr/share/nginx/html