質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

2回答

2271閲覧

dockerでnginx+springbootがうまくいかない

sidordesu

総合スコア4

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/04/03 03:54

編集2020/04/03 04:12

前提・実現したいこと

ローカル環境にてdockerを使いspringbootのwebアプリを起動させたい
nginxで→springbootへリクエストを流したい
・コンテナは2つ
nginx、springboot

・nginxの設定
80ポートでリッスン
リバースプロキシでlocalhost:8080指定

発生している問題・エラーメッセージ

localhost:80/loginでアクセスするとnginxの404エラーになってしまいます
期待値はlocalhost:80/loginにアクセスしたらnginxがhttp://localhost:8080/loginにアクセスしてくれることです

該当のソースコード

docker-compose.yml

version: '3' services: nginx: container_name: container_nginx build: nginx ports: - 80:80 #ポート80でアクセスすると、nginxのポート80にフォワード hostname: container_nginx_hostname app: container_name: container_springboot build: app expose: - 8080 hostname: container_springboot_hostname

Dockerfile(nginx)

FROM nginx:1.17.2 ADD nginx.conf /etc/nginx/conf.d/nginx.conf

nginx.conf

server { listen 80; listen [::]:80 default_server; charset utf-8; access_log off; expires 30d; root /usr/share/nginx/html; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

Dockerfile(springboot)

FROM adoptopenjdk/openjdk11:alpine-slim COPY build/libs/test-1.0.0.jar /var/test-1.0.0.jar CMD ["java","-jar","/var/test-1.0.0.jar"]

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2020/04/03 07:23

まずはリクエストがどこまで通っているのかを確認するために、ログの確認や、各サービスを落として見て挙動が変わるかを確認されると良いかと思います。 ちなみに、これだけの構成であれば、nginxで80->8080にしなくても、docker側でポート変換すれば良いと思いますが、何か意図があるのでしょうか。
guest

回答2

0

既に回答のある、

app は別のコンテナなので、proxy_pass http://localhost:8080; ではなく、proxy_pass http://app:8080;

こちらの通りですが、理由として、記載すべきはnginxコンテナから見たappコンテナのパスなので、appコンテナのサービス名である"app"を指定する必要があります。
springhack.com docker-nginx-SpringBoot-MySQL-redis

投稿2022/05/13 12:18

noricgeographic

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

nginx から見て、app は別のコンテナなので、proxy_pass http://localhost:8080; ではなく、proxy_pass http://app:8080; とするのではないでしょうか。

投稿2020/04/08 15:16

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問