This is a docker-compose.yaml for VS Code Server that allows host docker control in your browser window.
This is done by sharing the docker sock volume, docker-compose host folder and docker folder if you have it (for quick edits of config files) and using an environment variable to install the docker extension.
The docker-compose.yaml is from LinuxServer.io
---
services:
code-server:
image: lscr.io/linuxserver/code-server:latest
container_name: code-server
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- PASSWORD=password #optional
- HASHED_PASSWORD= #optional
- SUDO_PASSWORD=password #optional
- SUDO_PASSWORD_HASH= #optional
- PROXY_DOMAIN=code-server.my.domain #optional
- DEFAULT_WORKSPACE=/config/workspace #optional
- PWA_APPNAME=code-server #optional
volumes:
- /path/to/code-server/config:/config
ports:
- 8443:8443
restart: unless-stopped
Create passwords for security, if you use your own auth and reverse proxy you can add Traefik and Authentik labels.
Note: If you use your own auth, just remove the password options.
My host docker-compose folder is found at – /home/richay/docker-compose
My host docker folder is found at – /home/richay/docker
The environment variable needed is – DOCKER_MODS=linuxserver/mods:universal-docker
Adding these in my new docker-compose will look like this
---
services:
code-server:
image: lscr.io/linuxserver/code-server:latest
container_name: code-server
environment:
- PUID=1000
- PGID=1000
- TZ=Australia/Perth
- DEFAULT_WORKSPACE=/config/workspace
- PWA_APPNAME=code-server
- DOCKER_MODS=linuxserver/mods:universal-docker
volumes:
- /home/richay/docker/code:/config
- /home/richay/docker-compose:/config/workspace/docker-compose
- /home/richay/docker:/config/workspace/docker
- /var/run/docker.sock:/var/run/docker.sock
# ports:
# - 8443:8443
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.code-secure.entrypoints=https"
- "traefik.http.routers.code-secure.rule=Host(`code-server.richay.au`)"
- "traefik.http.routers.code-secure.tls=true"
- "traefik.http.routers.code-secure.tls.certresolver=cloudflare"
- "traefik.http.routers.code-secure.service=code"
- "traefik.http.services.code.loadbalancer.server.port=8443"
- "traefik.http.routers.code-secure.middlewares=authentik@file"
networks:
- proxy
networks:
proxy:
external: true
Note: Ports commented out as not needed with reverse proxy
If you dont have a reverse proxy and auth, then yours will look something like this
---
services:
code-server:
image: lscr.io/linuxserver/code-server:latest
container_name: code-server
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- PASSWORD=password #optional
- HASHED_PASSWORD= #optional
- SUDO_PASSWORD=password #optional
- SUDO_PASSWORD_HASH= #optional
- PROXY_DOMAIN=code-server.my.domain #optional
- DEFAULT_WORKSPACE=/config/workspace #optional
- PWA_APPNAME=code-server #optional
- DOCKER_MODS=linuxserver/mods:universal-docker
volumes:
- /path/to/code-server/config:/config
- /path/to/docker-compose:/config/workspace/docker-compose
- /path/to/docker:/config/workspace/docker
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8443:8443
restart: unless-stopped
Head to either http://hostip:8443 if using standard or https://code-server.richay.au if using reverse proxy and enjoy direct access to your docker-compose files with the power of VS Code 🙂



