Skip to content
This repository was archived by the owner on Aug 2, 2025. It is now read-only.

Commit 0dc912e

Browse files
committed
Fix: Adjust dockerfile (gosh i hope it works now)
1 parent fbc63f4 commit 0dc912e

2 files changed

Lines changed: 78 additions & 46 deletions

File tree

docker/Dockerfile-base

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Stage 1: Build stage
2-
FROM node:20-slim AS builder
2+
FROM node:20-alpine AS builder
33

44
LABEL maintainer="https://github.com/its4nik"
55
LABEL version="2.0.1"
@@ -15,45 +15,61 @@ WORKDIR /app
1515

1616
ENV NODE_NO_WARNINGS=1
1717

18+
RUN apk add --no-cache curl bash
19+
1820
COPY package*.json tsconfig.json environment.d.ts ./
1921

20-
RUN npm install --production=false
22+
RUN npm ci --include=dev
2123

2224
COPY ./src ./src
2325
RUN mv ./src/sample-variable.json ./src/data/variables.json
24-
RUN npm run build:mini
2526

26-
# Stage 2: Production stage
27-
FROM node:20-alpine AS production
27+
RUN npm run build:mini
2828

29+
# --------------------------------------
30+
# Stage 2: Dependency pruning stage
31+
FROM node:20-alpine AS deps
2932
WORKDIR /api
33+
COPY --from=builder /app/package*.json .
34+
RUN npm ci --omit=dev
3035

31-
RUN apk add --no-cache docker docker-compose bash curl && \
32-
adduser -h /api -s /bin/sh -D dockstatapi && \
33-
addgroup -S docker && \
34-
addgroup dockstatapi docker
36+
# --------------------------------------
37+
# Stage 3: Final production image
38+
FROM node:20-alpine AS prod
3539

36-
HEALTHCHECK --interval=5m --timeout=3s \
37-
CMD curl -f http://localhost:9876/api/status || exit 1
40+
WORKDIR /api
3841

39-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/dist/src /api/src
40-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/package*.json /api/
41-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/config/swagger.yaml /api/src/config/swagger.yaml
42-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/utils/assets /api/src/utils/assets
42+
RUN apk add --no-cache docker-cli bash curl && \
43+
mkdir -p /usr/libexec/docker/cli-plugins && \
44+
curl -sSL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" \
45+
-o /usr/libexec/docker/cli-plugins/docker-compose && \
46+
chmod +x /usr/libexec/docker/cli-plugins/docker-compose && \
47+
rm -rf /var/cache/apk/*
4348

44-
RUN npm install --omit=dev && \
45-
rm -rf package-lock.json node_modules/.cache
49+
ARG USER_ID=10001
50+
ARG GROUP_ID=10001
51+
RUN addgroup -g $GROUP_ID dockstatapi && \
52+
adduser -u $USER_ID -G dockstatapi -h /api -s /bin/sh -D dockstatapi
4653

47-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/misc/entrypoint.sh /api/entrypoint.sh
48-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/misc/createEnvFile.sh /api/createEnvFile.sh
49-
RUN chmod +x /api/*.sh
54+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/dist/src ./src
55+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/config/swagger.yaml ./src/config/swagger.yaml
56+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/utils/assets ./src/utils/assets
57+
COPY --from=deps --chown=dockstatapi:dockstatapi /api/node_modules ./node_modules
5058

51-
EXPOSE 9876
59+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/misc/entrypoint.sh .
60+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/misc/createEnvFile.sh .
61+
RUN chmod +x *.sh
5262

5363
RUN mkdir -p /api/src/data && \
54-
chmod -R 777 /api/src/data /api && \
55-
chown -R dockstatapi:dockstatapi /api
64+
chown -R dockstatapi:dockstatapi /api && \
65+
chmod -R 755 /api && \
66+
chmod 775 /api/src/data
67+
68+
HEALTHCHECK --interval=5m --timeout=3s \
69+
CMD curl -f http://localhost:9876/api/status || exit 1
5670

71+
EXPOSE 9876
5772
STOPSIGNAL 130
5873
USER dockstatapi
74+
5975
ENTRYPOINT [ "sh", "./entrypoint.sh", "--prod" ]

docker/Dockerfile-dev

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Stage 1: Build stage
2-
FROM node:20-slim AS builder
2+
FROM node:20-alpine AS builder
33

44
LABEL maintainer="https://github.com/its4nik"
55
LABEL version="2.0.1"
@@ -15,45 +15,61 @@ WORKDIR /app
1515

1616
ENV NODE_NO_WARNINGS=1
1717

18+
RUN apk add --no-cache curl bash
19+
1820
COPY package*.json tsconfig.json environment.d.ts ./
1921

20-
RUN npm install --production=false
22+
RUN npm ci --include=dev
2123

2224
COPY ./src ./src
2325
RUN mv ./src/sample-variable.json ./src/data/variables.json
24-
RUN npm run build
2526

26-
# Stage 2: Production stage
27-
FROM node:20-alpine AS production
27+
RUN npm run build
2828

29+
# --------------------------------------
30+
# Stage 2: Dependency pruning stage
31+
FROM node:20-alpine AS deps
2932
WORKDIR /api
33+
COPY --from=builder /app/package*.json .
34+
RUN npm ci --omit=dev
3035

31-
RUN apk add --no-cache docker docker-compose bash curl && \
32-
adduser -h /api -s /bin/sh -D dockstatapi && \
33-
addgroup -S docker && \
34-
addgroup dockstatapi docker
36+
# --------------------------------------
37+
# Stage 3: Final production image
38+
FROM node:20-alpine AS prod
3539

36-
HEALTHCHECK --interval=5m --timeout=3s \
37-
CMD curl -f http://localhost:9876/api/status || exit 1
40+
WORKDIR /api
3841

39-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/dist/src /api/src
40-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/package*.json /api/
41-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/config/swagger.yaml /api/src/config/swagger.yaml
42-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/utils/assets /api/src/utils/assets
42+
RUN apk add --no-cache docker-cli bash curl && \
43+
mkdir -p /usr/libexec/docker/cli-plugins && \
44+
curl -sSL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" \
45+
-o /usr/libexec/docker/cli-plugins/docker-compose && \
46+
chmod +x /usr/libexec/docker/cli-plugins/docker-compose && \
47+
rm -rf /var/cache/apk/*
4348

44-
RUN npm install --omit=dev && \
45-
rm -rf package-lock.json node_modules/.cache
49+
ARG USER_ID=10001
50+
ARG GROUP_ID=10001
51+
RUN addgroup -g $GROUP_ID dockstatapi && \
52+
adduser -u $USER_ID -G dockstatapi -h /api -s /bin/sh -D dockstatapi
4653

47-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/misc/entrypoint.sh /api/entrypoint.sh
48-
COPY --chown=dockstatapi:dockstatapi --from=builder /app/src/misc/createEnvFile.sh /api/createEnvFile.sh
49-
RUN chmod +x /api/*.sh
54+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/dist/src ./src
55+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/config/swagger.yaml ./src/config/swagger.yaml
56+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/utils/assets ./src/utils/assets
57+
COPY --from=deps --chown=dockstatapi:dockstatapi /api/node_modules ./node_modules
5058

51-
EXPOSE 9876
59+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/misc/entrypoint.sh .
60+
COPY --from=builder --chown=dockstatapi:dockstatapi /app/src/misc/createEnvFile.sh .
61+
RUN chmod +x *.sh
5262

5363
RUN mkdir -p /api/src/data && \
54-
chmod -R 777 /api/src/data /api && \
55-
chown -R dockstatapi:dockstatapi /api
64+
chown -R dockstatapi:dockstatapi /api && \
65+
chmod -R 755 /api && \
66+
chmod 775 /api/src/data
67+
68+
HEALTHCHECK --interval=5m --timeout=3s \
69+
CMD curl -f http://localhost:9876/api/status || exit 1
5670

71+
EXPOSE 9876
5772
STOPSIGNAL 130
5873
USER dockstatapi
74+
5975
ENTRYPOINT [ "sh", "./entrypoint.sh", "--dev" ]

0 commit comments

Comments
 (0)