私は2つのドッカーコンテナをdocker-composeで管理しており、webpackを使用してバックエンドAPIへのリクエストを適切にプロキシすることはできません。ドッカーコンテナへのwebpack-dev-serverプロキシ
ドッキングウィンドウ-compose.yml:
version: '2'
services:
web:
build:
context: ./frontend
ports:
- "80:8080"
volumes:
- ./frontend:/16AGR/frontend:rw
links:
- back:back
back:
build:
context: ./backend
expose:
- "8080"
ports:
- "8081:8080"
volumes:
- ./backend:/16AGR/backend:rw
サービスウェブはWebPACKの-devのサーバーによって提供されるアプリケーションをシンプルに反応されます。 サービス戻るはノードアプリケーションです。
私は私のホストからいずれかのアプリにアクセスするには問題がない:
$ curl localhost
> index.html
$ curl localhost:8081
> Hello World
私もウェブコンテナからバックサービスをpingとカールすることができます
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73ebfef9b250 16agr_web "npm run start" 37 hours ago Up 13 seconds 0.0.0.0:80->8080/tcp 16agr_web_1
a421fc24f8d9 16agr_back "npm start" 37 hours ago Up 15 seconds 0.0.0.0:8081->8080/tcp 16agr_back_1
$ docker exec -it 73e bash
$ [email protected]:/16AGR/frontend# curl back:8080
Hello world
しかし、私はプロキシに問題があります。 のWebPACKは
webpack-dev-server --display-reasons --display-error-details --history-api-fallback --progress --colors -d --hot --inline --host=0.0.0.0 --port 8080
で開始され、設定ファイルが
フロントエンド/ webpack.config.jsです:
var webpack = require('webpack');
var config = module.exports = {
...
devServer: {
//redirect api calls to backend server
proxy: {
'/api': {
target: "back:8080",
secure: false
}
}
}
...
}
私は内のリンクを/ API /テストを要求しようとすると私私は一般的なエラーを取得する例のアプリ、リンクとGoogleはあまり役に立たなかった:(
プロキシがコンテナにあり、リクエストがローカルホスト上にあるので、私はいくつかの奇妙なことを疑うが、私は本当にこれを解決する考えはしていない。
いいね!私にとっては、物事をソートしたのは 'ignorePath'オプションでした。私の問題は、他の資産へのリクエスト(例:スタイルシートからリンクされた背景画像も、Dockerコンテナ名を継承していました。これは、ブラウザからの要求404を意味していました。例えば。 'http:// localhost/path/to/image.png'が' http:// back/path/to/image.png'に書き直されていました。 –