以下是在 Windows 中使用 Docker 创建 Java Web 应用镜像并运行容器的分步指南:
步骤 1:安装 Docker
- 下载并安装 Docker Desktop for Windows
- 启动 Docker Desktop,确保使用 WSL 2 后端(推荐)或 Hyper-V。
步骤 2:准备 Java Web 应用
-
将你的 Java Web 项目编译为可部署文件(如
WAR
或JAR
)。
• 如果使用 Maven:mvn clean package
• 编译后文件通常位于
target/
目录下(例如app.war
或app.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 镜像
-
打开终端(PowerShell 或 CMD),导航到项目根目录(包含
Dockerfile
的目录)。 -
运行以下命令构建镜像:
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:验证
- 访问
http://localhost:8080
查看应用是否正常运行。 - 检查容器日志:
docker logs my-java-app
常见问题排查
- 端口冲突:如果
8080
端口被占用,修改映射端口(例如-p 8081:8080
)。 - 文件路径错误:确保
COPY
指令中的文件路径正确。 - 依赖缺失:如果应用依赖数据库或其他服务,使用
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 镜像并在容器中运行。