# 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", "."]