{"id":21698615,"url":"https://github.com/theohbrothers/docker-code-server","last_synced_at":"2025-04-12T12:42:03.822Z","repository":{"id":65238962,"uuid":"582257963","full_name":"theohbrothers/docker-code-server","owner":"theohbrothers","description":"Dockerized code-server 🐳","archived":false,"fork":false,"pushed_at":"2025-04-10T02:04:54.000Z","size":1231,"stargazers_count":0,"open_issues_count":10,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T02:49:59.997Z","etag":null,"topics":["alpine","buildx","code-server","docker","generate-dockerimagevariants","go","pwsh"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theohbrothers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-26T08:43:31.000Z","updated_at":"2025-03-15T02:04:46.000Z","dependencies_parsed_at":"2023-09-24T04:30:43.449Z","dependency_job_id":"2d9e61d4-cabd-4570-83c4-298a0acf6c20","html_url":"https://github.com/theohbrothers/docker-code-server","commit_stats":null,"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theohbrothers%2Fdocker-code-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theohbrothers%2Fdocker-code-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theohbrothers%2Fdocker-code-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theohbrothers%2Fdocker-code-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theohbrothers","download_url":"https://codeload.github.com/theohbrothers/docker-code-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248568828,"owners_count":21126109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","buildx","code-server","docker","generate-dockerimagevariants","go","pwsh"],"created_at":"2024-11-25T19:35:32.031Z","updated_at":"2025-04-12T12:42:03.801Z","avatar_url":"https://github.com/theohbrothers.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-code-server\n\n[![github-actions](https://github.com/theohbrothers/docker-code-server/actions/workflows/ci-master-pr.yml/badge.svg?branch=master)](https://github.com/theohbrothers/docker-code-server/actions/workflows/ci-master-pr.yml)\n[![github-release](https://img.shields.io/github/v/release/theohbrothers/docker-code-server?style=flat-square)](https://github.com/theohbrothers/docker-code-server/releases/)\n[![docker-image-size](https://img.shields.io/docker/image-size/theohbrothers/docker-code-server/latest)](https://hub.docker.com/r/theohbrothers/docker-code-server)\n\nDockerized [`code-server`](https://github.com/coder/code-server).\n\n## Tags\n\n| Tag | Dockerfile Build Context |\n|:-------:|:---------:|\n| `:4.93.1`, `:latest` | [View](variants/4.93.1) |\n| `:4.93.1-docker` | [View](variants/4.93.1-docker) |\n| `:4.93.1-docker-go-1.20.14` | [View](variants/4.93.1-docker-go-1.20.14) |\n| `:4.93.1-docker-rootless` | [View](variants/4.93.1-docker-rootless) |\n| `:4.93.1-docker-rootless-go-1.20.14` | [View](variants/4.93.1-docker-rootless-go-1.20.14) |\n| `:4.92.2` | [View](variants/4.92.2) |\n| `:4.92.2-docker` | [View](variants/4.92.2-docker) |\n| `:4.92.2-docker-go-1.20.14` | [View](variants/4.92.2-docker-go-1.20.14) |\n| `:4.92.2-docker-rootless` | [View](variants/4.92.2-docker-rootless) |\n| `:4.92.2-docker-rootless-go-1.20.14` | [View](variants/4.92.2-docker-rootless-go-1.20.14) |\n| `:4.91.1` | [View](variants/4.91.1) |\n| `:4.91.1-docker` | [View](variants/4.91.1-docker) |\n| `:4.91.1-docker-go-1.20.14` | [View](variants/4.91.1-docker-go-1.20.14) |\n| `:4.91.1-docker-rootless` | [View](variants/4.91.1-docker-rootless) |\n| `:4.91.1-docker-rootless-go-1.20.14` | [View](variants/4.91.1-docker-rootless-go-1.20.14) |\n| `:4.90.3` | [View](variants/4.90.3) |\n| `:4.90.3-docker` | [View](variants/4.90.3-docker) |\n| `:4.90.3-docker-go-1.20.14` | [View](variants/4.90.3-docker-go-1.20.14) |\n| `:4.90.3-docker-rootless` | [View](variants/4.90.3-docker-rootless) |\n| `:4.90.3-docker-rootless-go-1.20.14` | [View](variants/4.90.3-docker-rootless-go-1.20.14) |\n| `:4.89.1` | [View](variants/4.89.1) |\n| `:4.89.1-docker` | [View](variants/4.89.1-docker) |\n| `:4.89.1-docker-go-1.20.14` | [View](variants/4.89.1-docker-go-1.20.14) |\n| `:4.89.1-docker-rootless` | [View](variants/4.89.1-docker-rootless) |\n| `:4.89.1-docker-rootless-go-1.20.14` | [View](variants/4.89.1-docker-rootless-go-1.20.14) |\n| `:4.23.1` | [View](variants/4.23.1) |\n| `:4.23.1-docker` | [View](variants/4.23.1-docker) |\n| `:4.23.1-docker-go-1.20.14` | [View](variants/4.23.1-docker-go-1.20.14) |\n| `:4.23.1-docker-rootless` | [View](variants/4.23.1-docker-rootless) |\n| `:4.23.1-docker-rootless-go-1.20.14` | [View](variants/4.23.1-docker-rootless-go-1.20.14) |\n| `:4.22.1` | [View](variants/4.22.1) |\n| `:4.22.1-docker` | [View](variants/4.22.1-docker) |\n| `:4.22.1-docker-go-1.20.14` | [View](variants/4.22.1-docker-go-1.20.14) |\n| `:4.22.1-docker-rootless` | [View](variants/4.22.1-docker-rootless) |\n| `:4.22.1-docker-rootless-go-1.20.14` | [View](variants/4.22.1-docker-rootless-go-1.20.14) |\n| `:4.21.2` | [View](variants/4.21.2) |\n| `:4.21.2-docker` | [View](variants/4.21.2-docker) |\n| `:4.21.2-docker-go-1.20.14` | [View](variants/4.21.2-docker-go-1.20.14) |\n| `:4.21.2-docker-rootless` | [View](variants/4.21.2-docker-rootless) |\n| `:4.21.2-docker-rootless-go-1.20.14` | [View](variants/4.21.2-docker-rootless-go-1.20.14) |\n| `:4.20.1` | [View](variants/4.20.1) |\n| `:4.20.1-docker` | [View](variants/4.20.1-docker) |\n| `:4.20.1-docker-go-1.20.14` | [View](variants/4.20.1-docker-go-1.20.14) |\n| `:4.20.1-docker-rootless` | [View](variants/4.20.1-docker-rootless) |\n| `:4.20.1-docker-rootless-go-1.20.14` | [View](variants/4.20.1-docker-rootless-go-1.20.14) |\n| `:4.19.1` | [View](variants/4.19.1) |\n| `:4.19.1-docker` | [View](variants/4.19.1-docker) |\n| `:4.19.1-docker-go-1.20.14` | [View](variants/4.19.1-docker-go-1.20.14) |\n| `:4.19.1-docker-rootless` | [View](variants/4.19.1-docker-rootless) |\n| `:4.19.1-docker-rootless-go-1.20.14` | [View](variants/4.19.1-docker-rootless-go-1.20.14) |\n| `:4.18.0` | [View](variants/4.18.0) |\n| `:4.18.0-docker` | [View](variants/4.18.0-docker) |\n| `:4.18.0-docker-go-1.20.14` | [View](variants/4.18.0-docker-go-1.20.14) |\n| `:4.18.0-docker-rootless` | [View](variants/4.18.0-docker-rootless) |\n| `:4.18.0-docker-rootless-go-1.20.14` | [View](variants/4.18.0-docker-rootless-go-1.20.14) |\n| `:4.17.1` | [View](variants/4.17.1) |\n| `:4.17.1-docker` | [View](variants/4.17.1-docker) |\n| `:4.17.1-docker-go-1.20.14` | [View](variants/4.17.1-docker-go-1.20.14) |\n| `:4.17.1-docker-rootless` | [View](variants/4.17.1-docker-rootless) |\n| `:4.17.1-docker-rootless-go-1.20.14` | [View](variants/4.17.1-docker-rootless-go-1.20.14) |\n| `:4.16.1` | [View](variants/4.16.1) |\n| `:4.16.1-docker` | [View](variants/4.16.1-docker) |\n| `:4.16.1-docker-go-1.20.14` | [View](variants/4.16.1-docker-go-1.20.14) |\n| `:4.16.1-docker-rootless` | [View](variants/4.16.1-docker-rootless) |\n| `:4.16.1-docker-rootless-go-1.20.14` | [View](variants/4.16.1-docker-rootless-go-1.20.14) |\n| `:4.15.0` | [View](variants/4.15.0) |\n| `:4.15.0-docker` | [View](variants/4.15.0-docker) |\n| `:4.15.0-docker-go-1.20.14` | [View](variants/4.15.0-docker-go-1.20.14) |\n| `:4.15.0-docker-rootless` | [View](variants/4.15.0-docker-rootless) |\n| `:4.15.0-docker-rootless-go-1.20.14` | [View](variants/4.15.0-docker-rootless-go-1.20.14) |\n| `:4.14.1` | [View](variants/4.14.1) |\n| `:4.14.1-docker` | [View](variants/4.14.1-docker) |\n| `:4.14.1-docker-go-1.20.14` | [View](variants/4.14.1-docker-go-1.20.14) |\n| `:4.14.1-docker-rootless` | [View](variants/4.14.1-docker-rootless) |\n| `:4.14.1-docker-rootless-go-1.20.14` | [View](variants/4.14.1-docker-rootless-go-1.20.14) |\n| `:4.13.0` | [View](variants/4.13.0) |\n| `:4.13.0-docker` | [View](variants/4.13.0-docker) |\n| `:4.13.0-docker-go-1.20.14` | [View](variants/4.13.0-docker-go-1.20.14) |\n| `:4.13.0-docker-rootless` | [View](variants/4.13.0-docker-rootless) |\n| `:4.13.0-docker-rootless-go-1.20.14` | [View](variants/4.13.0-docker-rootless-go-1.20.14) |\n| `:4.12.0` | [View](variants/4.12.0) |\n| `:4.12.0-docker` | [View](variants/4.12.0-docker) |\n| `:4.12.0-docker-go-1.20.14` | [View](variants/4.12.0-docker-go-1.20.14) |\n| `:4.12.0-docker-rootless` | [View](variants/4.12.0-docker-rootless) |\n| `:4.12.0-docker-rootless-go-1.20.14` | [View](variants/4.12.0-docker-rootless-go-1.20.14) |\n| `:4.11.0` | [View](variants/4.11.0) |\n| `:4.11.0-docker` | [View](variants/4.11.0-docker) |\n| `:4.11.0-docker-go-1.20.14` | [View](variants/4.11.0-docker-go-1.20.14) |\n| `:4.11.0-docker-rootless` | [View](variants/4.11.0-docker-rootless) |\n| `:4.11.0-docker-rootless-go-1.20.14` | [View](variants/4.11.0-docker-rootless-go-1.20.14) |\n\nBase variants are based on `alpine`, and include `npm 8` and `nodejs 16` (to run `code-server`), `pwsh`, and basic tools. E.g. `4.93.1`\n\nIncremental variants include additional tools and their `code` extensions:\n\n- `docker`: [docker](https://docs.docker.com/engine/)\n- `docker-rootless`: [Rootless docker](https://docs.docker.com/engine/security/rootless/)\n- `go`: [go](https://go.dev)\n\n## Usage\n\n### Base variant(s)\n\n```sh\ndocker run --name code-server --rm -it -p 127.0.0.1:8080:8080 theohbrothers/docker-code-server:4.93.1\n# code-server is now available at http://127.0.0.1:8080. To login, use the password in the config file:\ndocker exec code-server sh -c 'cat ~/.config/code-server/config.yaml'\n```\n\nTo disable password authentication, use `--auth=none`:\n\n```sh\ndocker run --name code-server --rm -it -p 127.0.0.1:8080:8080 theohbrothers/docker-code-server:4.93.1 --bind-addr=0.0.0.0:8080 --auth=none --disable-telemetry --disable-update-check\n```\n\n### `docker` variant(s)\n\n```sh\ndocker run --name code-server --rm -it --privileged -v docker:/var/lib/docker -p 127.0.0.1:8080:8080 theohbrothers/docker-code-server:4.93.1-docker\n# code-server is now available at http://127.0.0.1:8080. To login, use the password in the config file:\ndocker exec code-server sh -c 'cat ~/.config/code-server/config.yaml'\n```\n\nTo disable password authentication, use `--auth=none`:\n\n```sh\ndocker run --name code-server --rm -it -p 127.0.0.1:8080:8080 theohbrothers/docker-code-server:4.93.1-docker --bind-addr=0.0.0.0:8080 --auth=none --disable-telemetry --disable-update-check\n```\n\n#### docker buildx\n\nTo build multi-arch images using [`docker buildx`](https://docs.docker.com/engine/reference/commandline/buildx/), the host must have kernel \u003e= `4.8`, and must have setup `qemu` in the kernel (see [here](https://github.com/docker/setup-qemu-action)):\n\n```sh\n# This must be run on each reboot on the host to setup qemu\ndocker run --rm --privileged tonistiigi/binfmt:latest --install all\n```\n\nThen, `buildx` multi-arch builds are now available in the container:\n\n```sh\n# Create a builder and use it\ndocker buildx create --name mybuilder --driver docker-container\ndocker buildx use mybuilder\ndocker buildx ls # Should show several platforms\ndocker buildx inspect mybuilder # Should show several platforms\n\n# Build\ndocker buildx build ...\n```\n\n### `docker-rootless` variant(s)\n\n```sh\ndocker run --name code-server --rm -it --privileged -p 127.0.0.1:8080:8080 theohbrothers/docker-code-server:4.93.1-docker-rootless\n# code-server is now available at http://127.0.0.1:8080. To login, use the password in the config file:\ndocker exec code-server sh -c 'cat ~/.config/code-server/config.yaml'\n```\n\nTo start code-server without password authentication, use `--auth=none`:\n\n```sh\ndocker run --name code-server --rm -it -p 127.0.0.1:8080:8080 theohbrothers/docker-code-server:4.93.1-docker-rootless --bind-addr=0.0.0.0:8080 --auth=none --disable-telemetry --disable-update-check\n```\n\nTo build multi-arch images using `docker buildx`, see [here](#docker-buildx).\n\n## Notes\n\n- See official docs for code-server configuration: https://github.com/coder/code-server/blob/main/docs/FAQ.md#how-does-the-config-file-work\n- The default user is named `user` with UID `1000`. To escalate as `root`, use `sudo`.\n- Users should provision their own configuration files at entrypoint. Examples include dotfiles such as `~/.bash_aliases`, `~/.gitconfig`, and `code` configs such as `~/.local/share/code-server/User/keybindings.json` and `~/.local/share/code-server/User/settings.json`. It is recommended to use any of these [utilities](https://dotfiles.github.io/utilities/) for managing dotfiles.\n\u003c!-- - To ensure `bash-completion` works, ensure `/etc/profile.d/bash_completion.sh` is sourced by `~/.bashrc`. When `exec`ing into the container, use a login shell (E.g. `docker exec -it \u003ccontainer\u003e bash -l`). --\u003e\n- To install a custom version of a `code` extension, set `\"extensions.autoCheckUpdates\": true` in `settings.json`. Under `Extensions` view, click the extension's cogwheel and select `Install Another Version...`.\n\n## Development\n\nRequires Windows `powershell` or [`pwsh`](https://github.com/PowerShell/PowerShell).\n\n```powershell\n# Install Generate-DockerImageVariants module: https://github.com/theohbrothers/Generate-DockerImageVariants\nInstall-Module -Name Generate-DockerImageVariants -Repository PSGallery -Scope CurrentUser -Force -Verbose\n\n# Edit ./generate templates\n\n# Generate the variants\nGenerate-DockerImageVariants .\n```\n\n### Variant versions\n\n[versions.json](generate/definitions/versions.json) contains a list of [Semver](https://semver.org/) versions, one per line.\n\nTo update versions in `versions.json`:\n\n```powershell\n./Update-Versions.ps1\n```\n\nTo update versions in `versions.json`, and open a PR for each changed version, and merge successful PRs one after another (to prevent merge conflicts), and finally create a tagged release and close milestone:\n\n```powershell\n$env:GITHUB_TOKEN = 'xxx'\n./Update-Versions.ps1 -PR -AutoMergeQueue -AutoRelease\n```\n\nTo perform a dry run, use `-WhatIf`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheohbrothers%2Fdocker-code-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheohbrothers%2Fdocker-code-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheohbrothers%2Fdocker-code-server/lists"}