【问题标题】:Why I can't access my application inside Kubernetes cluster through tomcat server?为什么我无法通过 tomcat 服务器访问我在 Kubernetes 集群中的应用程序?
【发布时间】:2020-12-13 17:11:52
【问题描述】:

我在 ubuntu 服务器 20.04.1 LTS 上运行带有 minikube 的 kubernetes 集群。当我启动部署时,我可以从集群访问 Tomcat 服务器,但我无法打开我的应用程序,我收到错误消息:

HTTP Status 404 – Not Found

这是我的 docker-compose 文件:

    version: "3"

#NETWORK
networks:
  network1:
    driver: bridge
volumes:
  dir-site:
    driver_opts:
      device: /smartclass_docker/site/
      type: bind
      o: bind
# Declare services
services:
  # service name
  server:
    container_name: server
    # Container image name
    image: repo/myimage
    ## Image used to build Dockerfile 
    build:
      #dockerfile: Dockerfile
      context: ./smart/

    # Container ports and host matching
    ports:
      - "3306:3306"
      - "8080:8080"

    ## Startup Policy
    restart driver: bridge
volumes:
  dir-site:
    driver_opts:
      device: /smart/site/
      type: bind
      o: bind
# Declaration of services
services:
  # service name
  server:
    container_name: server
    # name of the image
    image: repo/myimage
    ## Use IMAGE BUILD DOCKERFILE
    build:
      #dockerfile: Dockerfile
      context: ./smart/

    # CONTAINER ports
    ports:
      - "3306:3306"
      - "8080:8080"

    ## Startup policy
    restart: always

    # connect to network1
    networks:
      - network1
    volumes:
            - /data/dockerStore/data/db_server_1:/var/lib/mysql/

    restart: always

    # connect to network1
    networks:
      - network1
    volumes:
            - /data/dockerStore/data/db_server_1:/var/lib/mysql/

这是我的 kubernetes 部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
      matchLabels:
        app: myapp
  # type: LoadBalancer
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: jksun12/vdsaipro
        command: ["/run.sh"]
        ports:
        - containerPort: 80
        - containerPort: 3306
        - containerPort: 9001
        - containerPort: 9002
   # volumeMounts:
   #     - name: myapp-pv-claim
   #       mountPath: /var/lib/mysql
   #   volumes:
   #   - name: myapp-pv-claim
   #     persistentVolumeClaim:
   #       claimName: myapp-pv-claim
---
apiVersion: apps/v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-pv-claim
  labels:
    app: myapp
spec:
  accesModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 4Gi

我的应用程序文件位于 /smart 目录中,该目录是我实际运行 docker-compose 并构建主 Dockerfile 的目录的子目录。 我该如何解决? 谢谢

【问题讨论】:

  • 您的 docker compose 与您的 kubernetes 部署有什么关系?至于404 消息,它来自您的Tomcat 服务器吗?你检查过它的日志吗?它应该告诉你这个404 错误的确切原因。您应该能够看到您的 http 请求尝试获取的具体路径。
  • 谢谢,@mario 我这样做了,我发现错误来自容器内的 .war 文件的提取。用于应用程序的 tomcat 服务器版本也有错误。现在解决了。谢谢

标签: docker kubernetes docker-compose dockerfile containers


【解决方案1】:

我检查了容器内的日志,发现错误来自容器内的 .war 文件的提取。 用于应用程序的 tomcat 服务器版本也有错误。于是我把tomcat的版本换成了别的版本。

现在解决了。谢谢

【讨论】:

    猜你喜欢
    • 2020-12-12
    • 2015-12-13
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多