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 镜像并在容器中运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值