Sign inSign up

kylemmkay/vscode-with-tools

By kylemmkay

•Updated 5 days ago

This repository is intended to be an addon on top of the base VSCODE image by linux server. Just som

Image
0

3.6K

kylemmkay/vscode-with-tools repository overview

⁠VSCode with Tools

Source on Codeberg Docker Hub

This image is maintained on Codeberg.

This is a personalized build of the LinuxServer.io code-server image, customized for specific development workflows and made public for general use. It layers common runtimes, system utilities, and VS Code extensions directly into the image to provide a ready-to-use environment upon deployment.

Inspired and based off a blog post by John Nolan⁠.

⁠Base Image

This is built overtop linuxserver/code-server⁠. It inherits all standard features of that image, including the S6 overlay init system and the abc user management.

⁠Installed Components

⁠Runtimes and Languages
  • Python 3: Includes python3, python3-pip, python3-venv, and python3-dev.
  • Node.js: Installed via NodeSource (LTS). Includes npm, yarn, and eslint.
  • PowerShell: Installed via the Microsoft Ubuntu repository for cross-platform scripting.
⁠System Tools and Utilities
  • Docker CLI: The docker-ce-cli is installed to allow the container to interact with a Docker daemon (designed for use with the included DinD sidecar).
  • Search and Navigation: ripgrep (rg) and fzf are included for terminal-based file and text searching.
  • Build Tools: build-essential, curl, wget, gnupg, unzip, and software-properties-common.
⁠VS Code Extensions

The following extensions are pre-installed in the image path:

  • ms-python.python (Python language support)
  • ms-vscode.powershell (PowerShell language support)
  • eamodio.gitlens (Git source control visualization)

⁠Custom Configurations

  • Persistence: Bash history is redirected to /config/.bash_history to ensure command history survives container restarts when the /config volume is mapped.
  • Environment: The DEBIAN_FRONTEND is set to noninteractive during build to ensure clean package installation.
  • Aliases: A few aliases are built into this container. See the alias's file⁠.

⁠Deployment

The environment is intended to be run alongside a Docker-in-Docker (DinD) container. This allows for container management from within the VS Code terminal without mounting the host's /var/run/docker.sock directly. That said, it does function with a direct socket connection with the use of the DOCKER_GID environment variable.

All standard vscode-server variables should work as itended.

⁠Docker Compose Examples
⁠With DIND

[!WARNING] Current tests with DIND show issues with using docker build

services:
  code-server:
    image: kylemmkay/vscode-with-tools:latest
    container_name: code-server
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      #- HASHED_PASSWORD= #optional
      - DEFAULT_WORKSPACE=/config/workspace
      - DOCKER_HOST=tcp://code-server-dind:2379
      # Add the MS Marketplace (optional)
      #- EXTENSIONS_GALLERY={"serviceUrl":"https://marketplace.visualstudio.com/_apis/public/gallery","cacheUrl":"https://vscode.blob.core.windows.net/gallery/index","itemUrl":"https://marketplace.visualstudio.com/items"}
    volumes:
      - ./config:/config
    ports:
      - 8443:8443
    restart: unless-stopped

  code-server-dind:
    image: docker:dind
    container_name: docker_dind
    privileged: true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command:
      - dockerd
      - -H
      - tcp://0.0.0.0:2379
      - --tls=false
    restart: unless-stopped

⁠Using your host socket

I've added a script that will launch during container startup. If you provide your hosts docker GID (getent group docker | cut -d: -f3)into DOCKER_GID, the container will grant user abc access to the associated group, allowing you to use your hosts socket instead.

[!WARNING] Binding your host socket directly is generally not recommended

services:
  code-server:
    image: kylemmkay/vscode-with-tools:latest
    container_name: code-server
    environment:
      - PUID=1000
      - PGID=1000
      - DOCKER_GID=1000 # If present, container will grant user 'abc' access
      #- DOCKER_API_VERSION=1.43 # optional - specify docker api version, if needed run: docker version
      - TZ=Etc/UTC
      #- HASHED_PASSWORD= #optional
      - DEFAULT_WORKSPACE=/config/workspace #optional
      - PWA_APPNAME=code-server #optional
      # Add the MS Marketplace (optional)
      #- EXTENSIONS_GALLERY={"serviceUrl":"https://marketplace.visualstudio.com/_apis/public/gallery","cacheUrl":"https://vscode.blob.core.windows.net/gallery/index","itemUrl":"https://marketplace.visualstudio.com/items"}
    volumes:
      - ./config:/config
      - /var/run/docker.sock:/var/run/docker.sock # combine with DOCKER_GID env if being used
    ports:
      - 8443:8443
    restart: unless-stopped

Tag summary

Content type

Image

Digest

sha256:2a484905b…

Size

790.4 MB

Last updated

5 days ago

docker pull kylemmkay/vscode-with-tools