Debian JSP开发中如何使用Docker
导读:在 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
- jsp-demo/
- 示例文件
- index.jsp
- < %@ page contentType=“text/html; charset=UTF-8” language=“java” %> Hello, JSP!
- WEB-INF/web.xml
- My JSP App index.jsp
- 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”]
- FROM tomcat:9.0
- 构建与运行
- 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”]
- FROM tomcat:9.0
- 运行
- 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
- web:
- services:
- version: “3.8”
- 使用
- 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 卷 或 绑定挂载 持久化数据与配置(如日志、外部配置、数据库数据)。
- 镜像与版本
- 固定 Tomcat 与 JDK 版本标签,避免生产/开发环境不一致;例如:tomcat:9.0、eclipse-temurin:11-jdk。
- 安全建议
- 不在镜像中硬编码数据库密码等敏感信息,使用 Secrets 或 Compose 环境文件 管理;容器以 非 root 用户运行(必要时在 Dockerfile 中切换用户)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian JSP开发中如何使用Docker
本文地址: https://pptw.com/jishu/775862.html
