2024-02-09 05:31:50 +08:00
# 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
2024-02-10 05:56:57 +08:00
RUN --mount= from = packages,src= /tmp,dst= /tmp/packages rpm -i /tmp/packages/code-server*$( uname -m | sed 's/x86_64/amd64/g' | sed 's/aarch64/arm64/g' ) .rpm
2024-02-09 05:31:50 +08:00
# 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" , "." ]