|
1 | | -FROM oven/bun AS builder |
| 1 | +FROM --platform=$BUILDPLATFORM oven/bun:1.2 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 | | -RUN apt-get update && \ |
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 |
| 7 | +RUN mkdir -p /etc/s6-overlay/s6-rc.d/grimoire /etc/s6-overlay/s6-rc.d/user/contents.d && \ |
| 8 | + mkdir -p /app/data |
14 | 9 |
|
15 | | -RUN mkdir -p /app/data |
| 10 | +# Different build strategy based on architecture |
| 11 | +ARG TARGETARCH |
| 12 | +RUN if [ "${TARGETARCH}" = "arm64" ]; then \ |
| 13 | + # ARM64 build - avoid libc-bin issues |
| 14 | + apt-get update && \ |
| 15 | + apt-mark hold libc-bin && \ |
| 16 | + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ |
| 17 | + xz-utils wget python3 python3-pip build-essential && \ |
| 18 | + rm -rf /var/lib/apt/lists/*; \ |
| 19 | + else \ |
| 20 | + # Standard installation for other architectures |
| 21 | + apt-get update && \ |
| 22 | + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ |
| 23 | + xz-utils python3 python3-pip wget build-essential && \ |
| 24 | + rm -rf /var/lib/apt/lists/*; \ |
| 25 | + fi |
16 | 26 |
|
17 | 27 | 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 && \ |
| 28 | +RUN case "${TARGETARCH}" in \ |
| 29 | + "amd64") S6_ARCH="x86_64" ;; \ |
| 30 | + "arm64") S6_ARCH="aarch64" ;; \ |
| 31 | + "386") S6_ARCH="i686" ;; \ |
| 32 | + "arm/v7") S6_ARCH="armhf" ;; \ |
| 33 | + "arm/v6") S6_ARCH="arm" ;; \ |
| 34 | + *) S6_ARCH="x86_64" && echo "Warning: Unknown architecture ${TARGETARCH}, defaulting to x86_64" ;; \ |
| 35 | + esac && \ |
| 36 | + echo "Architecture: Docker ${TARGETARCH} -> s6-overlay ${S6_ARCH}" && \ |
| 37 | + 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 && \ |
| 38 | + 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 && \ |
| 39 | + tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \ |
| 40 | + tar -C / -Jxpf /tmp/s6-overlay-${S6_ARCH}.tar.xz && \ |
23 | 41 | rm /tmp/s6-overlay-*xz |
24 | 42 |
|
25 | 43 | COPY docker/etc/s6-overlay /etc/s6-overlay/ |
|
0 commit comments