nginx — подключите WebpackDevServer к PHP-FPM через Docker

у меня есть рабочая среда docker-compose, в которой выполняется контейнер Nginx, который передает каждый PHP-запрос в контейнер PHP-FPM (PHP 7.2).

Прошло несколько месяцев с тех пор, как я начал использовать Webpack 4 для создания своих внешних ресурсов, но рабочий процесс очень медленный с использованием --watch вариант, поэтому я решил перенести все на WebpackDevServer, который я считаю очень крутой функцией.

Я хотел бы использовать WebpackDevServer для объединения сборок в память и передавать каждый PHP-запрос в контейнер Fpm, но я продолжаю биться головой об стену из-за проблем с портами и сетью.

Я наивно думал о 2 подходах к этой проблеме:

  1. Используйте webpackdevserver вместо Nginx и прокси каждый PHP-запрос к контейнеру FPM
  2. Используйте Nginx + FPM и позвольте FPM загружать ресурсы из manifest.json, используя абсолютный путь в <script> а также <link> теги как <script src="webpack:3000/bundles/home.js"></script> вместо <script src="/bundles/home.js"></script>,

== ПЕРВЫЙ ПОДХОД ==

** docker-compose.yml **
services:
fpm:
build:
context: ./docker/php
image: fpm:latest

webpack:
build: ./docker/webpack
links:
- fpm
ports:
- 3000:3000
command: npm run server


** webpack.config.js **
output: {
filename: '[name].js',
publicPath: WEB_ROOT,
path: PATH_ROOT
},
devServer: {
hot: true,
inline: true,
host: '0.0.0.0',
port: 3000,
contentBase: PATH_ROOT,
proxy: {
'/./': {
target: 'fpm:9000',
secure:
}
},
},

Но когда я docker-compose up и я открываю localhost:3000 из браузера ничего не происходит.

== ВТОРОЙ ПОДХОД ==

** docker-compose.yml **
fpm:
build:
context: ./docker/php
image: fpm:latest
links:
- webpack

** webpack.config.js **
output: {
filename: '[name].js',
publicPath: 'https://localhost:3000/public/',
path: PATH_ROOT
},
devServer: {
hot: true,
inline: true,
host: '0.0.0.0',
publicPath: 'https://localhost:3000/public/',
},

Затем я изменил базовый путь активов Twig (я использую Twig в качестве движка шаблонов) webpack:3000/ но ничего не находит. Странный факт: если я пинг webpack:3000 из контейнера FPM он что-то находит, если я пытаюсь пинговать webpack:3000/bundles/somebundle.js он жалуется на неверный порт.

Где я не прав? Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]