以下是Java在Debian上的容器化部署實踐步驟:
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
# 基礎鏡像(推薦使用官方輕量級鏡像)
FROM openjdk:17-jdk-slim
# 設置工作目錄
WORKDIR /app
# 復制JAR文件到容器
COPY target/*.jar /app/app.jar
# 暴露端口
EXPOSE 8080
# 啟動命令
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
docker build -t java-app:1.0 .docker run -d -p 8080:8080 --name java-app java-app:1.0多階段構建(優化鏡像體積)
# 編譯階段
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"]
環境變量配置
ENV SPRING_PROFILES_ACTIVE=prod
ENTRYPOINT ["java", "-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}", "-jar", "/app/app.jar"]
健康檢查
HEALTHCHECK CMD curl --fail http://localhost:8080/health || exit 1
docker psdocker stop <容器ID>docker rm <容器ID>USER指令切換用戶。