Skip to content

Instantly share code, notes, and snippets.

@mrbuk
Created December 6, 2021 17:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrbuk/9e049e725879ba446777936431372762 to your computer and use it in GitHub Desktop.
Save mrbuk/9e049e725879ba446777936431372762 to your computer and use it in GitHub Desktop.
code-server with mini tools and go, python, rust and node toolstack
FROM debian:bullseye-slim
# minimal dependecies including python
RUN apt-get update; \
apt-get install -y --no-install-recommends \
ca-certificates netbase tzdata \
curl wget \
htop git \
bash zsh fish man \
gawk sed grep \
build-essential make \
python2 python3 python-is-python3\
; \
rm -rf /var/lib/apt/lists/*
# ensure /usr/local/bin has precedence
ENV PATH /usr/local/bin:$PATH
# code-server
ENV CODE_SERVER_VERSION 3.12.0
RUN adduser --home /workspace --gecos "" --disabled-password --uid 1000 coder
RUN cd /tmp/ && \
wget -q "https://github.com/cdr/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server_${CODE_SERVER_VERSION}_$(dpkg --print-architecture).deb" && \
dpkg -i /tmp/code-server*$(dpkg --print-architecture).deb && rm /tmp/code-server*.deb
# google cloud sdk
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl gcc python3-dev python3-pip python3-crcmod \
apt-transport-https lsb-release openssh-client git make gnupg \
; \
rm -rf /var/lib/apt/lists/*
COPY --from=google/cloud-sdk:360.0.0-debian_component_based /google-cloud-sdk /google-cloud-sdk
ENV CLOUD_SDK_VERSION=360.0.0
ENV PATH=$PATH:/google-cloud-sdk/bin
# change user to install dev runtimes as regular user and not root
USER 1000
ENV USER coder
# go
ENV GOLANG_VERSION 1.17.2
ENV PATH /usr/local/go/bin:$PATH
ENV GOPATH /workspace/go
ENV PATH $GOPATH/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin"
COPY --from=golang:1.17.2-bullseye /usr/local/go /usr/local/
# node
ENV NODE_VERSION=16.10.0
COPY --from=node:16.10.0-bullseye-slim /usr/local/bin /usr/local/bin
# rust
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH \
RUST_VERSION=1.55.0
COPY --from=rust:1.55.0-slim-bullseye /usr/local/rustup /usr/local/
COPY --from=rust:1.55.0-slim-bullseye /usr/local/cargo /usr/local/
EXPOSE 8080
ENTRYPOINT code-server --bind-addr 0.0.0.0:8080 /workspace
#!/bin/bash
set -eu
docker run -d --init \
-p 8123:8080 \
-e TZ='Europe/Berlin' \
-v /data_share/code-server/workspace/:/workspace \
--name code-server \
mrbuk/code-server:0.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment