В моем приложении много разных контейнеров докеров, включая nginx
и node
. После загрузки зависимостей и компиляции ресурсов в моем процессе сборки node
они не доступны для других моих контейнеров и моего хоста.
с другой стороны, если я смонтирую том, node_modules
и мои public
будут перезаписаны, поэтому мой вопрос: как бороться с компиляцией ресурсов в среде докера?
Вот так выглядят мои docker-compose.yml
и мои Dockerile
:
version: '3.5'
services:
nginx:
image: nginx:latest
volumes:
- ./:/var/www
- ./.docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
working_dir: /var/www
ports:
- 8282:80
node:
build:
context: ./
dockerfile: Dockerfile
tty: true
Dockerfile:
FROM node:8.15-slim
WORKDIR /var/www
COPY package.json yarn.lock ./
RUN yarn
COPY webpack.config.js ./
COPY resources ./resources/
COPY public ./public/
RUN yarn run dev
Как видите, я не монтирую тома в своем контейнере node
, поэтому очевидно, что хост "не видит" мои скомпилированные ресурсы в каталоге public
.
Если я смонтирую том, папка public
будет перезаписана, поэтому я также не буду видеть свои активы, так как папка public
моего хоста пуста.
node:
build:
context: ./
dockerfile: .docker/node/Dockerfile
tty: true
volumes:
- ./package.json:/var/www/package.json
- ./yarn.lock:/var/www/yarn.lock
- ./resources:/var/www/resources
- ./public/js:/var/www/public/js