Использование webpacker (webpack-dev-server) для компиляции внутри контейнера докеров без перестройки

Редактировать: версия Docker 17.12.0-ce, build c97c6d6 В OSX High Sierra 10.12.6

Я в процессе включения webpacker в существующий проект рельсов 4.2 (некоторые части по-прежнему используют звездочки) и сталкиваются с некоторыми проблемами при горячей перезагрузке. Мое приложение задокументировано, и я хотел бы иметь установку, где я могу редактировать свой код React, и его компилировать и обновлять внутри моего контейнера докеры для рельсов без перестройки (например, сборку докеров) для каждого небольшого изменения.

В настоящее время я запускаю и обрабатываю код webpack-dev-server. Сервер webpack dev (http://dockerhost: 3035/webpack-dev-server/) скомпилирует том, смонтированный на вашем локальном компьютере, но когда я обновляю приложение rails, вновь собранные активы не появятся. Есть ли что-то очевидное, что выглядит неправильно с моей настройкой?

# webpacker.yml
development:
  <<: *default

compile: true
  # Reference: https://webpack.js.org/configuration/dev-server/
  dev_server:
    https: false
    host: 0.0.0.0 #webpacker
    port: 3035
    public: 0.0.0.0:3035
    hmr: true
    # Inline should be set to true if using HMR
    inline: true
    overlay: true
    compress: true
    disable_host_check: true
    use_local_ip: false
    quiet: false
    headers:
      'Access-Control-Allow-Origin': '*'
    watch_options:
      ignored: /node_modules/
      poll: 1000

# docker-compose.yml
version: '3'
networks:
  pnet:
    driver: bridge

services:  
  webpacker:
    build: .
    command: bundle exec bin/webpack-dev-server #./bin/webpack-dev-server
    networks:
      - pnet
    volumes:                                                                                                               
      - .:/webpacker-app                                                                                                   
    working_dir: /webpacker-app
    ports:
      - '3035:3035'
      - '8080:8080'
    environment:
      - NODE_ENV=development
      - RAILS_ENV=development
      - WEBPACKER_DEV_SERVER_HOST=0.0.0.0
  web: 
    build: .
    command: bundle exec passenger start
    volumes:
      - ~/tmp/pids:/usr/src/app/tmp/pids
      - .:/webpacker-app
    networks:
      - pnet
    ports:
      - "3000:3000"
      - "3443:3443"
    depends_on:
      - webpacker
    environment:
      - NODE_ENV=development
      - RAILS_ENV=development
      - WEBPACKER_DEV_SERVER_HOST=0.0.0.0

Ответы

Ответ 1

Я не слишком хорошо знаком с webpacker но, глядя на ваши конфиги, я предполагаю, что вы используете адрес 0.0.0.0:3035 для доступа к 0.0.0.0:3035 dev-сервера из своего web контейнера, когда он должен быть webpacker:3035.

Попробуйте обновить WEBPACKER_DEV_SERVER_HOST в конфигурации вашего web сервиса:

web:
  ...
  environment:
    ...
    - WEBPACKER_DEV_SERVER_HOST=webpacker