build: support regional dependency mirrors

This commit is contained in:
237899745
2026-07-25 15:12:24 +08:00
parent c6e96464d3
commit 63744c6d2f
3 changed files with 25 additions and 3 deletions

View File

@@ -1,6 +1,11 @@
# Image tag built by docker/docker-compose.prod.yml # Image tag built by docker/docker-compose.prod.yml
IMAGEFORGE_TAG=local IMAGEFORGE_TAG=local
# Optional regional mirror used only while building Debian image layers.
DEBIAN_MIRROR=http://deb.debian.org/debian
# Optional sparse Cargo registry mirror used only while building the API image.
CARGO_REGISTRY_MIRROR=
# Public listener and URL # Public listener and URL
IMAGEFORGE_BIND_ADDRESS=0.0.0.0 IMAGEFORGE_BIND_ADDRESS=0.0.0.0
IMAGEFORGE_PORT=8080 IMAGEFORGE_PORT=8080

View File

@@ -2,9 +2,14 @@
FROM rust:1.92-trixie AS builder FROM rust:1.92-trixie AS builder
ARG DEBIAN_MIRROR=http://deb.debian.org/debian
ARG CARGO_REGISTRY_MIRROR=
WORKDIR /app WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN sed -i "s|http://deb.debian.org/debian|${DEBIAN_MIRROR%/}|g" /etc/apt/sources.list.d/debian.sources \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& apt-get install -y --no-install-recommends \
cmake \ cmake \
libdav1d-dev \ libdav1d-dev \
nasm \ nasm \
@@ -12,13 +17,18 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY Cargo.toml Cargo.lock ./ COPY Cargo.toml Cargo.lock ./
COPY .cargo ./.cargo
COPY src ./src COPY src ./src
COPY migrations ./migrations COPY migrations ./migrations
COPY templates ./templates COPY templates ./templates
RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked \ RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked \
--mount=type=cache,target=/app/target,sharing=locked \ --mount=type=cache,target=/app/target,sharing=locked \
cargo build --release --locked \ if [ -n "$CARGO_REGISTRY_MIRROR" ]; then \
printf '\n[source.crates-io]\nreplace-with = "deployment-mirror"\n\n[source.deployment-mirror]\nregistry = "%s"\n' \
"$CARGO_REGISTRY_MIRROR" >> .cargo/config.toml; \
fi \
&& cargo build --release --locked \
&& cp /app/target/release/imageforge /app/imageforge && cp /app/target/release/imageforge /app/imageforge
FROM node:22-alpine AS frontend-builder FROM node:22-alpine AS frontend-builder
@@ -31,7 +41,11 @@ RUN npm run build
FROM debian:trixie-slim FROM debian:trixie-slim
RUN apt-get update && apt-get install -y --no-install-recommends \ ARG DEBIAN_MIRROR=http://deb.debian.org/debian
RUN sed -i "s|http://deb.debian.org/debian|${DEBIAN_MIRROR%/}|g" /etc/apt/sources.list.d/debian.sources \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \ ca-certificates \
curl \ curl \
libdav1d7 \ libdav1d7 \

View File

@@ -55,6 +55,9 @@ services:
build: build:
context: .. context: ..
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
args:
DEBIAN_MIRROR: ${DEBIAN_MIRROR:-http://deb.debian.org/debian}
CARGO_REGISTRY_MIRROR: ${CARGO_REGISTRY_MIRROR:-}
init: true init: true
environment: environment:
<<: *imageforge-environment <<: *imageforge-environment