|
1 |
| -FROM --platform=$BUILDPLATFORM oven/bun:1.2 AS base |
| 1 | +FROM oven/bun AS builder |
2 | 2 | LABEL maintainer="Grimoire Developers <contact@grimoire.pro>"
|
3 | 3 | LABEL description="Bookmark manager for the wizards"
|
4 | 4 | LABEL org.opencontainers.image.source="https://github.com/goniszewski/grimoire"
|
5 | 5 | RUN adduser --disabled-password --gecos '' --uid 10001 grimoire
|
6 | 6 |
|
7 |
| -FROM base AS builder |
8 |
| - |
9 |
| -RUN mkdir -p /etc/s6-overlay/s6-rc.d/grimoire /etc/s6-overlay/s6-rc.d/user/contents.d /app/data |
10 |
| - |
11 |
| -ARG TARGETARCH |
12 | 7 | RUN apt-get update && \
|
13 |
| - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ |
14 |
| - xz-utils wget python3 python3-pip build-essential && \ |
15 |
| - rm -rf /var/lib/apt/lists/*; |
| 8 | + apt-get upgrade -y && \ |
| 9 | + apt-get install -y --no-install-recommends \ |
| 10 | + xz-utils python3 python3-pip wget build-essential && \ |
| 11 | + dpkg --configure -a && \ |
| 12 | + rm -rf /var/lib/apt/lists/* && \ |
| 13 | + mkdir -p /etc/s6-overlay/s6-rc.d/grimoire /etc/s6-overlay/s6-rc.d/user/contents.d |
| 14 | + |
| 15 | +RUN mkdir -p /app/data |
16 | 16 |
|
17 |
| -ARG S6_OVERLAY_VERSION=3.2.1.0 |
18 |
| -RUN case "${TARGETARCH}" in \ |
19 |
| - "amd64") S6_ARCH="x86_64" ;; \ |
20 |
| - "arm64") S6_ARCH="aarch64" ;; \ |
21 |
| - "386") S6_ARCH="i686" ;; \ |
22 |
| - "arm/v7") S6_ARCH="armhf" ;; \ |
23 |
| - "arm/v6") S6_ARCH="arm" ;; \ |
24 |
| - *) S6_ARCH="x86_64" && echo "Warning: Unknown architecture ${TARGETARCH}, defaulting to x86_64" ;; \ |
25 |
| - esac && \ |
26 |
| - echo "Architecture: Docker ${TARGETARCH} -> s6-overlay ${S6_ARCH}" && \ |
27 |
| - wget -q -O /tmp/s6-overlay-noarch.tar.xz https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz && \ |
28 |
| - wget -q -O /tmp/s6-overlay-${S6_ARCH}.tar.xz https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz && \ |
29 |
| - tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \ |
30 |
| - tar -C / -Jxpf /tmp/s6-overlay-${S6_ARCH}.tar.xz && \ |
| 17 | +ARG S6_OVERLAY_VERSION=3.1.6.2 |
| 18 | +ARG TARGETARCH=x86_64 |
| 19 | +ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp |
| 20 | +ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${TARGETARCH}.tar.xz /tmp |
| 21 | +RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \ |
| 22 | + tar -C / -Jxpf /tmp/s6-overlay-${TARGETARCH}.tar.xz && \ |
31 | 23 | rm /tmp/s6-overlay-*xz
|
32 | 24 |
|
33 | 25 | COPY docker/etc/s6-overlay /etc/s6-overlay/
|
34 |
| -RUN chmod +x /etc/s6-overlay/s6-rc.d/grimoire/run && \ |
35 |
| - chmod +x /etc/s6-overlay/s6-rc.d/init-data-permissions/up && \ |
36 |
| - chmod +x /etc/s6-overlay/scripts/init-data-permissions.sh |
| 26 | +RUN chmod +x /etc/s6-overlay/s6-rc.d/grimoire/run |
37 | 27 |
|
38 | 28 | ENV S6_KEEP_ENV=1 \
|
39 | 29 | S6_SERVICES_GRACETIME=15000 \
|
@@ -65,12 +55,9 @@ ENV NODE_ENV=production \
|
65 | 55 | NODE_OPTIONS="--max-old-space-size=4096"
|
66 | 56 | RUN bun --bun run build
|
67 | 57 |
|
68 |
| -FROM base AS release |
| 58 | +FROM builder AS release |
69 | 59 |
|
70 |
| -RUN mkdir -p /app/data && chown -R grimoire:grimoire /app/data && chmod 766 /app/data |
71 |
| -WORKDIR /app |
72 |
| - |
73 |
| -# Copy only the necessary files for the release |
| 60 | +COPY --from=dependencies /app/node_modules ./node_modules |
74 | 61 | COPY --from=build /app/build ./build
|
75 | 62 | COPY --from=build /app/migrations ./migrations
|
76 | 63 | COPY --from=build /app/migrate.js ./migrate.js
|
|
0 commit comments