-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.rootless
More file actions
71 lines (47 loc) · 1.85 KB
/
Copy pathDockerfile.rootless
File metadata and controls
71 lines (47 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 前端构建
FROM node:18-alpine AS frontend-builder
WORKDIR /frontend
COPY free-novel-web/package*.json ./
RUN npm install --registry=https://registry.npmmirror.com
COPY free-novel-web/ ./
RUN npm run build
# 服务端构建
FROM maven:3.9-eclipse-temurin-17-alpine AS backend-builder
WORKDIR /app
COPY novel/pom.xml ./
RUN mvn dependency:go-offline -B
COPY novel/src ./src
RUN mkdir -p src/main/resources/static
COPY --from=frontend-builder /frontend/dist/ ./src/main/resources/static/
RUN mvn clean package -DskipTests -Pprod
RUN mkdir -p target/dependency && \
cd target/dependency && \
jar -xf ../*.jar
FROM eclipse-temurin:17-jre-alpine
RUN apk add --no-cache curl tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone && \
apk del tzdata
WORKDIR /app
RUN addgroup -S appuser && adduser -S appuser -G appuser
COPY --from=backend-builder --chown=appuser:appuser /app/target/dependency/BOOT-INF/lib /app/lib
COPY --from=backend-builder --chown=appuser:appuser /app/target/dependency/META-INF /app/META-INF
COPY --from=backend-builder --chown=appuser:appuser /app/target/dependency/BOOT-INF/classes /app
RUN mkdir -p /app/logs && \
mkdir -p /app/tmp && \
mkdir -p /app/file && \
chown -R appuser:appuser /app
USER appuser
EXPOSE 8081
HEALTHCHECK --interval=30s --timeout=10s --start-period=90s --retries=3 \
CMD ["curl", "-f", "http://localhost:8081/actuator/health"]
ENV JAVA_OPTS="-Xms512m -Xmx2048m \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+UseStringDeduplication \
-XX:+OptimizeStringConcat \
-Djava.security.egd=file:/dev/./urandom \
-Dspring.profiles.active=prod \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/app/logs/heapdump.hprof"
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -cp /app:/app/lib/* com.wtl.novel.NovelApplication"]