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

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

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

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

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

解決済

Docker DesktopのKubernetesを使ってブラウザからSpring Bootアプリケーションへアクセスできない

Linkey
Linkey

総合スコア77

Docker

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

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

1回答

0評価

0クリップ

444閲覧

投稿2021/12/27 14:51

編集2021/12/27 14:58

Kubernetesを勉強しているものです。
以下のサイトを参考にDocker DesktopのKubernetesを使ってTomcatにwarファイルを配置した状態のpodにブラウザからアクセスしようとしています。
https://betterprogramming.pub/hello-kubernetes-spring-boot-a20e47d57872

以下の手順を実施してブラウザからアクセスをしたのですが、404エラーとなってしまいます。
①Dockerイメージを作成する

docker build -t (Dockerユーザ名)/springboot-sample1:v1 .

②springboot_deployment.yamlからリソースを作成する

kubectl apply -f springboot_deployment.yaml

③Podの状態を確認する

kubectl get pods NAME READY STATUS RESTARTS AGE spring-boot-sample1-798976f57c-l9q8z 1/1 Running 0 13m

④Podにアクセスしてwarファイルが配置されているかを確認する

kubectl exec -it spring-boot-sample1-798976f57c-l9q8z /bin/bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat# ls -la root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat# ls -la total 176 drwxr-xr-x 1 root root 4096 Dec 22 17:10 . drwxr-xr-x 1 root root 4096 Dec 22 17:09 .. -rw-r--r-- 1 root root 18994 Dec 2 22:01 BUILDING.txt -rw-r--r-- 1 root root 6210 Dec 2 22:01 CONTRIBUTING.md -rw-r--r-- 1 root root 60269 Dec 2 22:01 LICENSE -rw-r--r-- 1 root root 2333 Dec 2 22:01 NOTICE -rw-r--r-- 1 root root 3378 Dec 2 22:01 README.md -rw-r--r-- 1 root root 6905 Dec 2 22:01 RELEASE-NOTES -rw-r--r-- 1 root root 16517 Dec 2 22:01 RUNNING.txt drwxr-xr-x 2 root root 4096 Dec 22 17:10 bin drwxr-xr-x 1 root root 4096 Dec 27 14:26 conf drwxr-xr-x 2 root root 4096 Dec 22 17:10 lib drwxrwxrwx 1 root root 4096 Dec 27 14:26 logs drwxr-xr-x 2 root root 4096 Dec 22 17:10 native-jni-lib drwxrwxrwx 2 root root 4096 Dec 22 17:10 temp drwxr-xr-x 1 root root 4096 Dec 27 14:26 webapps drwxr-xr-x 7 root root 4096 Dec 2 22:01 webapps.dist drwxrwxrwx 1 root root 4096 Dec 27 14:26 work root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat# cd /usr/local/tomcat/webapps root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat/webapps# ls -la total 17220 drwxr-xr-x 1 root root 4096 Dec 27 14:26 . drwxr-xr-x 1 root root 4096 Dec 22 17:10 .. drwxr-x--- 5 root root 4096 Dec 27 14:26 sample1-0.0.1-SNAPSHOT -rwxr-xr-x 1 root root 17614964 Dec 27 13:22 sample1-0.0.1-SNAPSHOT.war

⑤springboot-sample1-load-balancer-service.yamlからリソースを作成する

springboot-sample1-load-balancer-service.yaml

⑥サービス状態を確認する

kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6d2h spring-boot-sample1-loadbalancer LoadBalancer XX.XXX.XXX.XX localhost 8080:30175/TCP 10s spring-boot-sample1-service-name ClusterIP XX.XXX.XXX.XX <none> 8080/TCP 25s

http://localhost:8080/sampleにアクセスするが404となる
イメージ説明

原因を調べていますが、今のところ見つかっていません

Kubernetes、Tomcatに詳しい方がいましたらご回答いただけないでしょうか?
よろしくお願いいたします。

ちなみに設定した内容は以下です。
★SampleController.java

Java

package com.example.sample1.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SampleController { @RequestMapping("/sample") public String home() { return "Hello World"; } }

★Dockerfile

FROM tomcat:10-jdk8 COPY ./sample1-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ EXPOSE 8080

★springboot_deployment.yaml

yaml

apiVersion: apps/v1 kind: Deployment metadata: name: spring-boot-sample1 spec: replicas: 1 selector: matchLabels: app: spring-boot-sample1 template: metadata: labels: app: spring-boot-sample1 visualize: "true" spec: containers: - name: spring-boot-sample1-pod image: (Dockerユーザ名)/springboot-sample1:v1 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: labels: visualize: "true" service-label: spring-boot-sample1-service name: spring-boot-sample1-service-name spec: type: ClusterIP ports: - name: angular-sample-service-port-name port: 8080 protocol: TCP selector: app: spring-boot-sample1

★springboot-sample1-load-balancer-service.yaml

yaml

apiVersion: v1 kind: Service metadata: labels: service-label: spring-boot-sample1-service name: spring-boot-sample1-loadbalancer spec: type: LoadBalancer ports: - name: spring-boot-sample1-service-port-name port: 8080 protocol: TCP selector: app: spring-boot-sample1

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Docker

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

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