温馨提示×

Java在Debian上的容器化部署实践

小樊
52
2025-09-15 07:20:57
栏目: 编程语言

以下是Java在Debian上的容器化部署实践步骤:

一、安装Docker

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

二、编写Dockerfile

# 基础镜像(推荐使用官方轻量级镜像)
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 复制JAR文件到容器
COPY target/*.jar /app/app.jar

# 暴露端口
EXPOSE 8080

# 启动命令
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

三、构建与运行容器

  • 构建镜像:在Dockerfile所在目录执行
    docker build -t java-app:1.0 .
  • 运行容器
    docker run -d -p 8080:8080 --name java-app java-app:1.0

四、进阶实践

  1. 多阶段构建(优化镜像体积)

    # 编译阶段
    FROM maven:3.8.6-jdk-11 AS build
    COPY src /app/src
    COPY pom.xml /app
    RUN mvn clean package -DskipTests
    
    # 运行阶段
    FROM openjdk:11-jre-slim
    COPY --from=build /app/target/*.jar /app/app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "/app/app.jar"]
    
  2. 环境变量配置

    ENV SPRING_PROFILES_ACTIVE=prod
    ENTRYPOINT ["java", "-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}", "-jar", "/app/app.jar"]
    
  3. 健康检查

    HEALTHCHECK CMD curl --fail http://localhost:8080/health || exit 1
    

五、容器管理

  • 查看运行状态docker ps
  • 停止容器docker stop <容器ID>
  • 删除容器docker rm <容器ID>

六、安全建议

  • 避免以root用户运行容器,使用USER指令切换用户。
  • 定期更新基础镜像以修补安全漏洞。

0