@@ -22,6 +22,16 @@ COPY chat-service/pom.xml chat-service/pom.xml
2222
2323# Tải dependency trước để cache (Không compile)
2424RUN mvn -q -DskipTests dependency:go-offline
25+ RUN apt-get update && \
26+ apt-get install -y \
27+ apt-transport-https \
28+ ca-certificates \
29+ curl \
30+ gnupg && \
31+ curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
32+ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian buster stable" > /etc/apt/sources.list.d/docker.list && \
33+ apt-get update && \
34+ apt-get install -y docker-ce-cli
2535
2636# # Copy toàn bộ source
2737COPY . .
@@ -43,9 +53,53 @@ COPY --from=build /workspace/${MODULE}/target/*.jar app.jar
4353
4454# Đặt quyền sở hữu cho coding-service
4555FROM eclipse-temurin:21-jre
56+ # Build-args
4657ARG MODULE
47- ENV JAVA_OPTS=""
58+ ARG DOCKER_HOST_GID=999
59+
60+ # Cài đặt Docker CLI trong runtime image
61+ RUN apt-get update && \
62+ apt-get install -y \
63+ apt-transport-https \
64+ ca-certificates \
65+ curl \
66+ gnupg \
67+ sudo && \
68+ curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
69+ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian buster stable" > /etc/apt/sources.list.d/docker.list && \
70+ apt-get update && \
71+ apt-get install -y docker-ce-cli
72+
73+ # Tạo group và user cho ứng dụng (chỉ cho coding-service)
74+ RUN if [ "$MODULE" = "coding-service" ]; then \
75+ groupadd -r -g ${DOCKER_HOST_GID} docker_host && \
76+ groupadd -r -g 1001 appuser && \
77+ useradd -r -u 1001 -g appuser -G docker_host appuser && \
78+ echo "appuser ALL=(root) NOPASSWD: /usr/bin/docker" >> /etc/sudoers; \
79+ fi
80+
81+ # TẠO THƯ MỤC /WORK VÀ CẤP QUYỀN
82+ RUN if [ "$MODULE" = "coding-service" ]; then \
83+ mkdir -p /work && chown -R 1001:1001 /work; \
84+ fi
85+
86+ # Thiết lập thư mục làm việc
4887WORKDIR /app
88+
89+ # Copy JAR với quyền sở hữu phù hợp
4990COPY --from=build /workspace/${MODULE}/target/*.jar app.jar
91+
92+ # Đặt quyền sở hữu cho coding-service
93+ RUN if [ "$MODULE" = "coding-service" ]; then \
94+ chown appuser:appuser app.jar; \
95+ fi
96+
97+ # Đảm bảo quyền đọc
98+ RUN chmod +r app.jar
99+
100+ # Chuyển sang sử dụng user appuser (chỉ cho coding-service)
101+ USER ${MODULE:+-}${MODULE:+appuser}
102+
103+ ENV JAVA_OPTS=""
50104EXPOSE 7777
51105ENTRYPOINT ["sh" ,"-c" ,"java $JAVA_OPTS -jar /app/app.jar" ]
0 commit comments