]>
Commit | Line | Data |
---|---|---|
1 | # build stage | |
2 | FROM node:18-alpine3.19 as build-stage | |
3 | ||
4 | ENV PNPM_HOME="/pnpm" | |
5 | ENV PATH="$PNPM_HOME:$PATH" | |
6 | RUN corepack enable | |
7 | RUN corepack use pnpm@8 | |
8 | ||
9 | WORKDIR /app | |
10 | ||
11 | COPY package.json pnpm-lock.yaml ./ | |
12 | RUN pnpm install --frozen-lockfile | |
13 | ||
14 | COPY . . | |
15 | RUN pnpm build | |
16 | ||
17 | # production stage | |
18 | FROM alpine:3.19 | |
19 | ||
20 | ENV GID 1000 | |
21 | ENV UID 1000 | |
22 | ENV PORT 8080 | |
23 | ENV SUBFOLDER "/_" | |
24 | ENV INIT_ASSETS 1 | |
25 | ENV IPV6_DISABLE 0 | |
26 | ||
27 | RUN addgroup -S lighttpd -g ${GID} && adduser -D -S -u ${UID} lighttpd lighttpd && \ | |
28 | apk add -U --no-cache lighttpd | |
29 | ||
30 | WORKDIR /www | |
31 | ||
32 | COPY lighttpd.conf /lighttpd.conf | |
33 | COPY lighttpd-ipv6.sh /etc/lighttpd/ipv6.sh | |
34 | COPY entrypoint.sh /entrypoint.sh | |
35 | COPY --from=build-stage --chown=${UID}:${GID} /app/dist /www/ | |
36 | COPY --from=build-stage --chown=${UID}:${GID} /app/dist/assets /www/default-assets | |
37 | ||
38 | USER ${UID}:${GID} | |
39 | ||
40 | HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ | |
41 | CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:${PORT}/ || exit 1 | |
42 | ||
43 | EXPOSE ${PORT} | |
44 | ||
45 | ENTRYPOINT ["/bin/sh", "/entrypoint.sh"] |