у меня есть рабочая среда docker-compose, в которой выполняется контейнер Nginx, который передает каждый PHP-запрос в контейнер PHP-FPM (PHP 7.2).
Прошло несколько месяцев с тех пор, как я начал использовать Webpack 4 для создания своих внешних ресурсов, но рабочий процесс очень медленный с использованием --watch
вариант, поэтому я решил перенести все на WebpackDevServer, который я считаю очень крутой функцией.
Я хотел бы использовать WebpackDevServer для объединения сборок в память и передавать каждый PHP-запрос в контейнер Fpm, но я продолжаю биться головой об стену из-за проблем с портами и сетью.
Я наивно думал о 2 подходах к этой проблеме:
<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
он жалуется на неверный порт.
Где я не прав? Спасибо!
Задача ещё не решена.
Других решений пока нет …