当前位置: 首页 > news >正文

Windows 中使用dockers创建指定java web 为镜像和运行容器

以下是在 Windows 中使用 Docker 创建 Java Web 应用镜像并运行容器的分步指南:


步骤 1:安装 Docker

  1. 下载并安装 Docker Desktop for Windows
  2. 启动 Docker Desktop,确保使用 WSL 2 后端(推荐)或 Hyper-V。

步骤 2:准备 Java Web 应用

  1. 将你的 Java Web 项目编译为可部署文件(如 WARJAR)。
    • 如果使用 Maven:mvn clean package

    • 编译后文件通常位于 target/ 目录下(例如 app.warapp.jar)。


步骤 3:创建 Dockerfile
在项目根目录中创建一个名为 Dockerfile 的文件(无后缀),内容如下:

示例 1:使用 Tomcat 部署 WAR 文件

# 使用官方 Tomcat 镜像
FROM tomcat:9.0-jdk11# 删除默认的 ROOT 应用(可选)
RUN rm -rf /usr/local/tomcat/webapps/ROOT# 将 WAR 文件复制到 Tomcat 的 webapps 目录
COPY target/app.war /usr/local/tomcat/webapps/ROOT.war# 暴露端口
EXPOSE 8080# 启动 Tomcat
CMD ["catalina.sh", "run"]

示例 2:运行可执行 JAR 文件

# 使用 OpenJDK 镜像
FROM openjdk:11-jre-slim# 创建工作目录
WORKDIR /app# 复制 JAR 文件
COPY target/app.jar /app/app.jar# 暴露端口(根据实际应用端口修改)
EXPOSE 8080# 运行应用
CMD ["java", "-jar", "app.jar"]

步骤 4:构建 Docker 镜像

  1. 打开终端(PowerShell 或 CMD),导航到项目根目录(包含 Dockerfile 的目录)。

  2. 运行以下命令构建镜像:

    docker build -t java-web-app:latest .
    

    -t java-web-app:latest:指定镜像名称和标签。

    .:表示使用当前目录作为构建上下文。


步骤 5:运行容器
运行 Tomcat 容器

docker run -d -p 8080:8080 --name my-java-app java-web-app:latest

运行 JAR 容器

docker run -d -p 8080:8080 --name my-java-app java-web-app:latest

-d:后台运行容器。

-p 8080:8080:将容器端口 8080 映射到主机端口 8080

--name my-java-app:指定容器名称。


步骤 6:验证

  1. 访问 http://localhost:8080 查看应用是否正常运行。
  2. 检查容器日志:
    docker logs my-java-app
    

常见问题排查

  1. 端口冲突:如果 8080 端口被占用,修改映射端口(例如 -p 8081:8080)。
  2. 文件路径错误:确保 COPY 指令中的文件路径正确。
  3. 依赖缺失:如果应用依赖数据库或其他服务,使用 docker-compose.yml 编排多容器。

高级选项
使用 Docker Compose
创建 docker-compose.yml 文件:

version: '3'
services:web:build: .ports:- "8080:8080"restart: always

运行:

docker-compose up -d

持久化数据
为 Tomcat 挂载持久化卷:

docker run -d -p 8080:8080 -v /path/on/host:/usr/local/tomcat/webapps --name my-java-app java-web-app:latest

通过以上步骤,你可以将 Java Web 应用打包为 Docker 镜像并在容器中运行。

相关文章:

  • 深度学习系统学习系列【2】之人工神经网络(ANN)
  • 长江学者答辩ppt美化_特聘教授_校企联聘学者_青年长江学者PPT案例模板
  • 设计模式简述(十七)备忘录模式
  • 使用线性表实现通讯录管理
  • AtCoder Beginner Contest 404(ABCDE)
  • C++八股--5--设计模式--适配器模式,代理模式,观察者模式
  • Maven安装配置以及Idea中的配置教程
  • ElasticSearch深入解析(十):字段膨胀(Mapping 爆炸)问题的解决思路
  • Servlet(二)
  • 安卓基础(悬浮窗和摄像)
  • 大数据引领行业革命:深度解析与未来趋势
  • 【网络原理】深入理解HTTPS协议
  • 智能家居的OneNet云平台
  • 接口测试的核心思维(基础篇)
  • C语言蓝桥杯真题代码
  • java学习之数据结构:二、链表
  • 第38课 常用快捷操作——双击“鼠标左键”进入Properties Panel
  • C++模版结构体的使用
  • 使用Rust + WebAssembly提升前端渲染性能:从原理到落地
  • 嵌入式硬件篇---STM32 系列单片机型号命名规则
  • 做网站fjfzwl/搜索百度指数
  • 验证平台 wordpress/关键词优化计划
  • 织梦网站地图调用全站文章/经典seo伪原创
  • 开发公司楼盘项目管理费合同/网络推广关键词优化公司
  • 德州手机网站建设/网络运营和网络营销的区别
  • 公司内部网站怎么做/武汉seo公司哪家专业