首页主机资讯Debian JSP开发中如何使用Docker

Debian JSP开发中如何使用Docker

时间2025-12-19 03:14:03发布访客分类主机资讯浏览1300
导读:在 Debian 上进行 JSP 开发并结合 Docker 的推荐做法 一 环境准备 安装 Docker(Debian 12 示例) 更新索引并安装必要包:sudo apt update && sudo apt ins...

在 Debian 上进行 JSP 开发并结合 Docker 的推荐做法


一 环境准备

  • 安装 Docker(Debian 12 示例)
    • 更新索引并安装必要包:sudo apt update & & sudo apt install -y ca-certificates curl gnupg lsb-release
    • 添加 Docker 官方 GPG 密钥并写入 APT 源,随后安装:sudo apt update & & sudo apt install -y docker-ce docker-ce-cli containerd.io
    • 将当前用户加入 docker 组(避免每次 sudo):sudo usermod -aG docker $USER(需重新登录或执行 newgrp docker)
    • 验证:docker version、docker run --rm hello-world
  • 准备 Java 与构建工具
    • 安装 JDK 8/11/17(JSP 项目常用 8 或 11):sudo apt install -y openjdk-11-jdk
    • 可选:安装 Maven:sudo apt install -y maven
  • 说明
    • JSP 需要运行在 Servlet 容器(如 Tomcat)中,因此开发/运行阶段建议直接使用 Tomcat 镜像,而不是仅用 JDK 镜像运行 jar。

二 快速开始 极简 Tomcat 运行环境

  • 目录结构
    • jsp-demo/
      • index.jsp
      • WEB-INF/
        • web.xml
  • 示例文件
    • index.jsp
      • < %@ page contentType=“text/html; charset=UTF-8” language=“java” %> Hello, JSP!
    • WEB-INF/web.xml
      • My JSP App index.jsp
  • Dockerfile(基于 Tomcat 9)
    • FROM tomcat:9.0
      • COPY ./index.jsp /usr/local/tomcat/webapps/ROOT/
      • COPY ./WEB-INF /usr/local/tomcat/webapps/ROOT/WEB-INF
      • CMD [“catalina.sh”, “run”]
  • 构建与运行
    • docker build -t jsp-demo .
    • docker run -d -p 8080:8080 --name jsp-demo-container jsp-demo
    • 访问:http://localhost:8080(若把应用放入子目录如 myapp,则访问 http://localhost:8080/myapp/)
  • 说明
    • 将应用部署到 ROOT 目录可直接用根路径访问;部署到自定义目录(如 myapp)则以目录名作为应用上下文路径访问。

三 使用 Maven 与 WAR 的标准开发流程

  • 生成项目骨架(示例)
    • mvn archetype:generate -DgroupId=com.example -DartifactId=jsp-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    • 在生成的目录中完善源码与资源,确保打包为 war
  • 构建
    • mvn clean package(产物为 target/jsp-demo.war)
  • Dockerfile(WAR 部署)
    • FROM tomcat:9.0
      • COPY target/jsp-demo.war /usr/local/tomcat/webapps/ROOT.war
      • CMD [“catalina.sh”, “run”]
  • 运行
    • docker build -t jsp-demo-war .
    • docker run -d -p 8080:8080 --name jsp-demo-war-container jsp-demo-war
    • 访问:http://localhost:8080
  • 说明
    • 将 WAR 复制到 Tomcat 的 webapps 目录后会自动解压部署;使用 ROOT.war 映射到根应用,否则使用 xxx.war 并以 /xxx 为上下文路径访问。

四 多服务与数据持久化 Docker Compose 示例

  • 场景:Tomcat + PostgreSQL(开发环境)
  • docker-compose.yml
    • version: “3.8”
      • services:
        • web:
          • build: .
          • ports:
            • “8080:8080”
          • environment:
            • POSTGRES_DB: appdb
            • POSTGRES_USER: app
            • POSTGRES_PASSWORD: apppass
          • depends_on:
            • db
        • db:
          • image: postgres:15
          • environment:
            • POSTGRES_DB: appdb
            • POSTGRES_USER: app
            • POSTGRES_PASSWORD: apppass
          • volumes:
            • pgdata:/var/lib/postgresql/data
  • 使用
    • docker compose up -d(或 docker-compose up -d)
    • 应用通过 JNDI/数据源配置 使用数据库(示例 JDBC URL:jdbc:postgresql://db:5432/appdb)
  • 说明
    • Compose 可同时编排应用与数据库,便于本地联调与集成测试。

五 常见问题与最佳实践

  • 访问路径与部署方式
    • 部署到 ROOT:访问根路径;部署到 /app:访问 /app。注意打包为 WAR 并放入 webapps 目录后由 Tomcat 自动部署。
  • 日志查看与故障排查
    • 查看容器日志:docker logs -f < 容器名>
    • 进入容器:docker exec -it < 容器名> bash(排查部署结构、配置与权限问题)
  • 运行前台进程
    • 使用 CMD [“catalina.sh”, “run”] 保持前台运行,避免容器启动后立即退出;Web 服务器/应用服务器不应以 daemon 方式在容器内后台运行。
  • 数据与配置管理
    • 避免把数据写入容器层,使用 Docker 卷绑定挂载 持久化数据与配置(如日志、外部配置、数据库数据)。
  • 镜像与版本
    • 固定 TomcatJDK 版本标签,避免生产/开发环境不一致;例如:tomcat:9.0、eclipse-temurin:11-jdk。
  • 安全建议
    • 不在镜像中硬编码数据库密码等敏感信息,使用 SecretsCompose 环境文件 管理;容器以 非 root 用户运行(必要时在 Dockerfile 中切换用户)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian JSP开发中如何使用Docker
本文地址: https://pptw.com/jishu/775862.html
Debian JSP项目如何进行容器化部署 Debian JSP开发中如何使用Jenkins

游客 回复需填写必要信息