Files
AIGC/demo/LINUX_DEPLOY_SCRIPT.sh
2025-11-13 17:01:39 +08:00

77 lines
2.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 "前端服务可能还在启动中,请稍后检查"