Docker webpack-dev-serverをnginxのコンテナと連携する
Docker
コンテナ内でwebpack-dev-server
を起動して、別のコンテナのnginx
と連携する方法を紹介します。
以下のような構成でコンテナを使用している場合を考えます。
docker-compose.yml
version: '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/html
webコンテナは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.yml
version: '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