metznet-channel/docker/Dockerfile

39 lines
1.7 KiB
Docker

# Guix build environment for building `guix system docker-image` images
# from this repo on a machine (e.g. macOS) that can't run Guix natively.
#
# Guix state lives under /gnu and /var/guix, which the compose file mounts
# as named volumes so pulls/builds are cached across container runs. This
# image only bakes in the *initial* binary install; everything built via
# `guix pull` / `guix system` happens at `docker run` time against those
# volumes.
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
bash gnupg dirmngr wget ca-certificates xz-utils tar locales procps sudo netbase \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i '/en_US.UTF-8/s/^# //' /etc/locale.gen \
&& locale-gen
# Official installer: extracts the binary tarball to /gnu and /var/guix,
# creates the guixbuild group/users, and (since no init system is present
# in the container) prints instructions to run guix-daemon manually, which
# entrypoint.sh does. `yes ''` answers every prompt with its default,
# which includes authorizing the ci.guix.gnu.org / bordeaux substitute
# servers so builds don't compile everything from source.
RUN wget -O /tmp/guix-install.sh https://guix.gnu.org/guix-install.sh \
&& chmod +x /tmp/guix-install.sh \
&& yes '' | /tmp/guix-install.sh \
&& rm -f /tmp/guix-install.sh \
&& test -x /root/.config/guix/current/bin/guix
ENV PATH="/root/.config/guix/current/bin:/usr/local/bin:${PATH}" \
GUIX_LOCPATH="/root/.config/guix/current/lib/locale" \
LANG="en_US.UTF-8"
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
WORKDIR /workspace
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["bash"]