Компиляция активов в докере. Как это сделать правильно? - PullRequest
0 голосов
/ 19 января 2019

В моем приложении много разных контейнеров докеров, включая 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
...