From 828f94b6a28b4aafa0f20d227fcf044d1bb22f93 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Thu, 8 Feb 2024 22:38:25 +0300 Subject: [PATCH] docker: add Fedora 39 based image Fixes #6661 --- ci/release-image/Dockerfile.fedora | 51 ++++++++++++++++++++++++++++++ ci/release-image/docker-bake.hcl | 12 +++++++ 2 files changed, 63 insertions(+) create mode 100644 ci/release-image/Dockerfile.fedora diff --git a/ci/release-image/Dockerfile.fedora b/ci/release-image/Dockerfile.fedora new file mode 100644 index 000000000..42866422a --- /dev/null +++ b/ci/release-image/Dockerfile.fedora @@ -0,0 +1,51 @@ +# syntax=docker/dockerfile:experimental + +ARG BASE=fedora:39 +FROM scratch AS packages +COPY release-packages/code-server*.rpm /tmp/ + +FROM $BASE + +RUN dnf update -y \ + && dnf install -y \ + curl \ + git \ + git-lfs \ + htop \ + nano \ + openssh-clients \ + procps \ + wget \ + zsh \ + dumb-init \ + glibc-langpack-en \ + && rm -rf /var/cache/dnf +RUN git lfs install + +ENV LANG=en_US.UTF-8 +RUN echo 'LANG="en_US.UTF-8"' > /etc/locale.conf + +RUN useradd -u 1000 coder && echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd + +RUN ARCH="$(uname -m | sed 's/x86_64/amd64/g' | sed 's/aarch64/arm64/g')" \ + && curl -fsSL "https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-$ARCH.tar.gz" | tar -C /usr/local/bin -xzf - \ + && chown root:root /usr/local/bin/fixuid \ + && chmod 4755 /usr/local/bin/fixuid \ + && mkdir -p /etc/fixuid \ + && printf "user: coder\ngroup: coder\n" > /etc/fixuid/config.yml + +COPY ci/release-image/entrypoint.sh /usr/bin/entrypoint.sh +RUN --mount=from=packages,src=/tmp,dst=/tmp/packages dnf install -y /tmp/packages/code-server*$(uname -m | sed 's/x86_64/amd64/g' | sed 's/aarch64/arm64/g').rpm + +# Allow users to have scripts run on container startup to prepare workspace. +# https://github.com/coder/code-server/issues/5177 +ENV ENTRYPOINTD=${HOME}/entrypoint.d + +EXPOSE 8080 +# This way, if someone sets $DOCKER_USER, docker-exec will still work as +# the uid will remain the same. note: only relevant if -u isn't passed to +# docker-run. +USER 1000 +ENV USER=coder +WORKDIR /home/coder +ENTRYPOINT ["/usr/bin/entrypoint.sh", "--bind-addr", "0.0.0.0:8080", "."] diff --git a/ci/release-image/docker-bake.hcl b/ci/release-image/docker-bake.hcl index b45d613fd..a64bdfcc9 100644 --- a/ci/release-image/docker-bake.hcl +++ b/ci/release-image/docker-bake.hcl @@ -66,3 +66,15 @@ target "code-server-ubuntu-focal" { } platforms = ["linux/amd64", "linux/arm64"] } + +target "code-server-fedora-39" { + dockerfile = "ci/release-image/Dockerfile.fedora" + tags = concat( + gen_tags_for_docker_and_ghcr("fedora"), + gen_tags_for_docker_and_ghcr("39"), + ) + args = { + BASE = "fedora:39" + } + platforms = ["linux/amd64", "linux/arm64"] +}