Docker webpack-dev-serverをnginxのコンテナと連携する
Dockerコンテナ内でwebpack-dev-serverを起動して、別のコンテナのnginxと連携する方法を紹介します。
以下のような構成でコンテナを使用している場合を考えます。
docker-compose.ymlversion: '3'
services:
web:
image: nginx
depends_on:
- app
ports:
- "8080:80"
volumes:
- ./docker/web/default.conf:/etc/nginx/conf.d/default.conf
- ./app:/var/www/html
app:
build: ./docker/app
volumes:
- ./docker/app/php.ini:/usr/local/etc/php/php.ini
- ./app:/var/www/htmlwebコンテナはnginxのWEBサーバーのコンテナです。
appコンテナはphpやnodejsなどの開発環境としてメインで使用するコンテナです。
また、wenコンテナではappコンテナと連携してphpが実行できるようになっています。
(詳しくはDocker ComposeでNginxとphpを連携するなどを参照)
webpack-dev-serverの設定
appコンテナで起動するwebpack-dev-serverの設定を以下のようにします。
host: '0.0.0.0'は、ホストOSからwebpack-dev-serverにアクセスできるようにするための設定です。
proxyでwebコンテナにアクセスするように設定します。(http://webのwebはnginxのコンテナ名です)
devServer: {
port: 3000,
host: '0.0.0.0',
proxy: {
'*': 'http://web'
},
},docker-compose.ymlの修正
以下のようにappコンテナのポート3000をホストOSからアクセスできるようにします。
docker-compose.ymlversion: '3'
services:
web:
image: nginx
depends_on:
- app
ports:
- "8080:80"
volumes:
- ./docker/web/default.conf:/etc/nginx/conf.d/default.conf
- ./app:/var/www/html
app:
build: ./docker/app
ports:
- "3000:3000"
volumes:
- ./docker/app/php.ini:/usr/local/etc/php/php.ini
- ./app:/var/www/html