77 lines
2.2 KiB
Bash
77 lines
2.2 KiB
Bash
|
|
# Linux服务器部署命令(已修改为使用正确的镜像)
|
|||
|
|
|
|||
|
|
cd /home/ubuntu/spring-vue-app/backend
|
|||
|
|
|
|||
|
|
# 创建/更新 Dockerfile(使用正确的镜像)
|
|||
|
|
cat > Dockerfile << 'EOF'
|
|||
|
|
# 多阶段构建:构建阶段
|
|||
|
|
FROM maven:3.9-eclipse-temurin-21 AS builder
|
|||
|
|
WORKDIR /app
|
|||
|
|
|
|||
|
|
# 复制 pom.xml 并下载依赖(利用Docker缓存)
|
|||
|
|
COPY pom.xml .
|
|||
|
|
RUN mvn dependency:go-offline -B || true
|
|||
|
|
|
|||
|
|
# 复制源码
|
|||
|
|
COPY src ./src
|
|||
|
|
|
|||
|
|
# 打包应用(跳过测试)
|
|||
|
|
RUN mvn clean package -DskipTests -B
|
|||
|
|
|
|||
|
|
# 生产阶段
|
|||
|
|
FROM eclipse-temurin:21-jre
|
|||
|
|
WORKDIR /app
|
|||
|
|
|
|||
|
|
# 安装时区支持和wget(健康检查)
|
|||
|
|
RUN apt-get update && \
|
|||
|
|
apt-get install -y --no-install-recommends \
|
|||
|
|
tzdata \
|
|||
|
|
wget \
|
|||
|
|
curl && \
|
|||
|
|
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
|||
|
|
echo "Asia/Shanghai" > /etc/timezone && \
|
|||
|
|
apt-get clean && \
|
|||
|
|
rm -rf /var/lib/apt/lists/*
|
|||
|
|
|
|||
|
|
# 创建非root用户(安全考虑)
|
|||
|
|
RUN groupadd -r spring && useradd -r -g spring spring
|
|||
|
|
|
|||
|
|
# 创建必要的目录并设置权限
|
|||
|
|
RUN mkdir -p /app/uploads /app/temp /app/logs && \
|
|||
|
|
chown -R spring:spring /app
|
|||
|
|
|
|||
|
|
# 从构建阶段复制JAR文件(项目生成的JAR文件名:demo-0.0.1-SNAPSHOT.jar)
|
|||
|
|
COPY --from=builder --chown=spring:spring /app/target/demo-0.0.1-SNAPSHOT.jar app.jar
|
|||
|
|
|
|||
|
|
# 切换到非root用户
|
|||
|
|
USER spring
|
|||
|
|
|
|||
|
|
EXPOSE 8080
|
|||
|
|
|
|||
|
|
# JVM 参数优化(适配50人并发,建议2-4GB内存)
|
|||
|
|
ENV JAVA_OPTS="-Xmx2g -Xms1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Djava.security.egd=file:/dev/./urandom"
|
|||
|
|
|
|||
|
|
# 健康检查(检查应用是否响应,不依赖Actuator)
|
|||
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
|
|||
|
|
CMD wget --no-verbose --tries=1 --spider http://localhost:8080/ || exit 1
|
|||
|
|
|
|||
|
|
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
# 返回项目根目录
|
|||
|
|
cd /home/ubuntu/spring-vue-app
|
|||
|
|
|
|||
|
|
# 构建并启动服务
|
|||
|
|
sudo docker-compose build --no-cache
|
|||
|
|
sudo docker-compose up -d
|
|||
|
|
|
|||
|
|
# 等待服务启动
|
|||
|
|
sleep 30
|
|||
|
|
|
|||
|
|
# 检查服务状态
|
|||
|
|
sudo docker-compose ps
|
|||
|
|
|
|||
|
|
# 健康检查(不依赖Actuator,直接检查根路径)
|
|||
|
|
curl -f http://localhost:8080/ || echo "后端服务可能还在启动中,请稍后检查"
|
|||
|
|
curl -f http://localhost/ || echo "前端服务可能还在启动中,请稍后检查"
|