初めて Docker を試しており、Spring Boot Web アプリを Docker コンテナー内で実行しようとしています。アプリ (自己完結型の jar にパッケージ化) を構築し、それを Docker イメージに追加しています (これが必要です)。
私のSSCCEはGitHubのこのBootup リポジトリにあります。この README には、私が見ているものを再現するためのすべての手順が含まれています。しかし、基本的に:
- Web アプリを jar にビルドします
docker build -t bootup .
成功する実行- 以下の出力からわかるように、実行する
docker run -it -p 9200:9200 -d --name bootup bootup
とコンテナが正常に起動するように見えますdocker ps
- ただし、ブラウザを
http://localhost:9200
に向けると、何も表示されません
docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED
a8c4ee64a1bc bootup "/bin/sh -c 'java -ja" 2 days ago
STATUS PORTS NAMES
Up 12 seconds 0.0.0.0:9200->9200/tcp bootup
Web アプリは、Java のデフォルトの 8080ではなく、ポート 9200 で実行するように構成されています。../gradlew clean build && java -jar build/libs/bootup.jar
私の知る限り、ホスト上でポートをブロックするファイアウォールは実行されていません (私は Mac 10.11.5 を使用しており、System Preferences >> Security & Privacy >> Firewall
オフになっていることが確認されています)。
誰かが私が間違っているところを見つけることができますか?
アップデート:
を実行し、curl
ホストで:netstat
lsof
HOST:
curl http://localhost:9200
curl: (52) Empty reply from server
netstat -an | grep 9200
tcp6 0 0 ::1.9200 *.* LISTEN
tcp4 0 0 *.9200 *.* LISTEN
lsof -n -i4TCP:9200 | grep LISTEN
com.docke 2578 myuser 19u IPv4 <someHexNumber> 0t0 TCP *:wap-wsp (LISTEN)
そしてdocker exec
、コンテナに入れ、別のを実行しましたnetstat
:
CONTAINER:
netstat -an | grep 9200
bash: netstat: command not found
写真付きで更新:
私のブラウザ(Chrome)が指しているhttp://localhost:9200
写真:
ソース コードの画像http://localhost:9200
:
のページを検査している Chrome デベロッパー ツールの画像http://localhost:9200
:
Network
Chrome デベロッパー ツールのタブの画像:
ここで一体何が起こっているのですか?!?!? 情報源によると、ブラウザーはDockerland からこんにちは、こんにちは! をレンダリングするはずです。メッセージは問題ありません。実際のブラウザ ページによると、ネットワーク エラーが発生しているようです。そして、Chrome 開発者ツールによると、私のアプリは、私のアプリから遠く離れていない、あらゆる種類の HTML/CSS/JS コンテンツを返しています(ソース コードをチェックして、自分の目で確かめてください)!!!