# syntax=docker/dockerfile:1 FROM python:3.13-slim-bookworm AS builder ARG SCALABLE_CLI_VERSION=1.0.0 ARG TARGETARCH RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates \ && rm -rf /var/lib/apt/lists/* RUN ARCH=$([ "$TARGETARCH" = "arm64" ] && echo "aarch64" || echo "x86_64") \ && curl -fsSL -o /tmp/sc.tar.gz \ "https://github.com/ScalableCapital/scalable-cli/releases/download/v${SCALABLE_CLI_VERSION}/sc-v${SCALABLE_CLI_VERSION}-linux-${ARCH}-gnu.tar.gz" \ && curl -fsSL -o /tmp/SHA256SUMS \ "https://github.com/ScalableCapital/scalable-cli/releases/download/v${SCALABLE_CLI_VERSION}/sc-v${SCALABLE_CLI_VERSION}-SHA256SUMS" \ && cd /tmp \ && EXPECTED=$(grep "linux-${ARCH}-gnu.tar.gz" SHA256SUMS | awk '{print $1}') \ && ACTUAL=$(sha256sum sc.tar.gz | awk '{print $1}') \ && if [ "$EXPECTED" != "$ACTUAL" ]; then \ echo "SHA256 mismatch: expected $EXPECTED, got $ACTUAL"; exit 1; \ fi \ && tar -xzf sc.tar.gz \ && mv sc-v${SCALABLE_CLI_VERSION}-linux-${ARCH}-gnu/sc /usr/local/bin/sc \ && chmod +x /usr/local/bin/sc FROM python:3.13-slim-bookworm ARG PUID=1000 ARG PGID=1000 # 1. System-Pakete (inkl. gosu) RUN apt-get update && apt-get install -y --no-install-recommends gosu \ && rm -rf /var/lib/apt/lists/* # 2. User anlegen RUN groupadd -g ${PGID} appgroup \ && useradd -u ${PUID} -g appgroup -m -d /home/appuser appuser # 3. Scalable CLI kopieren COPY --from=builder /usr/local/bin/sc /usr/local/bin/sc # 4. App-Dateien WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY scalable_sync.py . COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # 5. Env ENV SC_CONFIG_DIR=/tmp/sc-config ENV PUID=${PUID} ENV PGID=${PGID} # 6. Entrypoint (wechselt intern auf appuser) ENTRYPOINT ["/entrypoint.sh"]