FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy # set version label ARG BUILD_DATE ARG VERSION ARG CODE_RELEASE LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="aptalca" # environment settings ARG DEBIAN_FRONTEND="noninteractive" ENV HOME="/config" RUN \ echo "**** install runtime dependencies ****" && \ apt-get update && \ apt-get install -y \ git \ jq \ libatomic1 \ nano \ net-tools \ netcat \ sudo && \ echo "**** install code-server ****" && \ if [ -z ${CODE_RELEASE+x} ]; then \ CODE_RELEASE=$(curl -sX GET https://api.github.com/repos/coder/code-server/releases/latest \ | awk '/tag_name/{print $4;exit}' FS='[""]' | sed 's|^v||'); \ fi && \ mkdir -p /app/code-server && \ chmod +x /app && \ curl -o \ /tmp/code-server.tar.gz -L \ "https://github.com/coder/code-server/releases/download/v${CODE_RELEASE}/code-server-${CODE_RELEASE}-linux-amd64.tar.gz" && \ tar xf /tmp/code-server.tar.gz -C \ /app/code-server --strip-components=1 && \ echo "**** clean up ****" && \ apt-get clean && \ rm -rf \ /config/* \ /tmp/* \ /var/lib/apt/lists/* \ /var/tmp/* # add local files COPY /root / WORKDIR /app # Create a non-root user and switch to it RUN adduser --disabled-password --gecos '' --shell /bin/bash user \ && chown -R user:user /app RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user USER user # All users can use /home/user as their home directory ENV HOME=/home/user RUN mkdir $HOME/.cache $HOME/.config \ && chmod -R 777 $HOME WORKDIR $HOME/app ####################################### # Start root user section ####################################### USER root # User Debian packages ## Security warning : Potential user code executed as root (build time) RUN --mount=target=/root/packages.txt,source=packages.txt \ apt-get update && \ xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \ bash /root/on_startup.sh ####################################### # End root user section ####################################### USER user # Python packages #RUN --mount=target=requirements.txt,source=requirements.txt \ pip install --no-cache-dir --upgrade -r requirements.txt # Copy the current directory contents into the container at $HOME/app setting the owner to the user COPY --chown=user . $HOME/app RUN chmod +x start_server.sh EXPOSE 8080 CMD ["./start_server.sh"] # ports and volumes #EXPOSE 8443