This commit is contained in:
2025-11-01 16:44:44 +08:00
parent 3c5df92c06
commit 5ed4fbca92
3 changed files with 72 additions and 4 deletions

View File

@@ -71,8 +71,10 @@ RUN chown -R root:root /root/.m2
COPY src ./src
# 构建应用(使用国内镜像加速)
RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml || \
(echo "Build completed with some warnings" && true)
RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml
# 验证JAR文件是否生成
RUN ls -la /build/target/point-strategy-*.jar || (echo "JAR文件生成失败" && exit 1)
# ===== 运行阶段 =====
# 使用更小的Alpine镜像
@@ -120,6 +122,9 @@ WORKDIR /app
# 从构建阶段复制jar文件
COPY --from=builder /build/target/point-strategy-*.jar app.jar
# 验证JAR文件是否正确复制
RUN ls -la app.jar && file app.jar
# 切换到非root用户
USER app

View File

@@ -74,8 +74,13 @@ RUN chown -R root:root /root/.m2
COPY src ./src
# 构建应用(使用国内镜像加速)
RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml || \
(echo "Build completed with some warnings" && true)
RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml
# 验证JAR文件是否生成
RUN ls -la /build/target/point-strategy-*.jar || (echo "JAR文件生成失败" && exit 1)
# 显示JAR文件信息
RUN file /build/target/point-strategy-*.jar && ls -lh /build/target/point-strategy-*.jar
# ===== 运行阶段 =====
# 使用OpenJDK 8作为基础镜像
@@ -142,6 +147,9 @@ WORKDIR /app
# 从构建阶段复制jar文件
COPY --from=builder /build/target/point-strategy-*.jar app.jar
# 验证JAR文件是否正确复制
RUN ls -la app.jar && file app.jar
# 复制配置文件(如果需要覆盖默认配置)
# COPY application-prod.yml application-prod.yml

55
debug-container.sh Executable file
View File

@@ -0,0 +1,55 @@
#!/bin/bash
echo "=== 容器调试脚本 ==="
echo
CONTAINER_NAME="digital-archive-app"
# 检查容器是否运行
if ! docker ps | grep -q "$CONTAINER_NAME"; then
echo "❌ 容器 $CONTAINER_NAME 未运行"
echo "正在启动容器进行调试..."
# 临时启动容器进行调试
docker run --rm --name debug-container -it --entrypoint /bin/sh digital-archive:stable
exit 0
fi
echo "✓ 找到运行中的容器: $CONTAINER_NAME"
echo
echo "🔍 检查容器内的文件结构:"
# 检查工作目录
echo "1. 工作目录内容:"
docker exec "$CONTAINER_NAME" ls -la /app || echo "❌ 无法访问 /app 目录"
# 检查 JAR 文件
echo
echo "2. JAR 文件检查:"
docker exec "$CONTAINER_NAME" ls -la app.jar || echo "❌ app.jar 不存在"
# 检查 JAR 文件类型
echo
echo "3. JAR 文件类型:"
docker exec "$CONTAINER_NAME" file app.jar || echo "❌ 无法检查文件类型"
# 检查用户权限
echo
echo "4. 用户权限:"
docker exec "$CONTAINER_NAME" whoami && docker exec "$CONTAINER_NAME" id
# 检查 Java 环境
echo
echo "5. Java 环境:"
docker exec "$CONTAINER_NAME" java -version || echo "❌ Java 不可用"
echo
echo "🧪 测试直接运行 JAR:"
docker exec "$CONTAINER_NAME" sh -c "cd /app && java -jar app.jar --help" || echo "❌ JAR 运行失败"
echo
echo "=== 调试完成 ==="
echo
echo "💡 如果需要进入容器调试:"
echo " docker exec -it $CONTAINER_NAME /bin/sh"