本文档介绍了如何使用 Docker 部署 code-server。内容涵盖了官方 Docker 镜像的架构、配置选项和使用模式。有关其他部署方法,请参阅安装与部署。
code-server Docker 镜像提供了一个容器化环境,预装并配置了 code-server,以便在容器启动时运行。官方镜像基于 Debian 12,并包含 git、SSH 和各种编辑器等常用开发工具。
默认情况下,该容器在 8080 端口上暴露 code-server,并以名为“coder”的非 root 用户运行。
来源: ci/release-image/Dockerfile53-61 ci/release-image/entrypoint.sh1-27
官方 Docker 镜像使用多阶段构建过程构建,从预先构建的 Debian 包安装 code-server。
镜像包含
来源: ci/release-image/Dockerfile3-48
要使用 Docker 部署 code-server,请使用以下命令
此命令将
/home/coder/project运行此命令后,code-server 将在 http://:8080 访问。
容器使用一个入口点脚本,该脚本负责
来源: ci/release-image/entrypoint.sh1-27
| 可变 | 描述 |
|---|---|
PASSWORD | 设置 code-server 的密码 |
HASHED_PASSWORD | 设置 code-server 的加密密码 |
DOCKER_USER | 设置自定义用户名,而不是“coder” |
ENTRYPOINTD | 启动脚本的目录路径(默认值:~/entrypoint.d) |
常见的卷挂载包括
| 路径 | 目的 |
|---|---|
/home/coder/project | 项目文件 |
/home/coder/.config/code-server | code-server 配置 |
/home/coder/.vscode | VS Code 配置和设置 |
默认情况下,容器以“coder”用户(UID 1000)运行。您可以通过以下两种方式覆盖此设置:
-u 标志DOCKER_USER 环境变量当设置了 DOCKER_USER 时,入口点脚本将修改现有“coder”用户以拥有指定的用户名。
来源: ci/release-image/entrypoint.sh8-19 ci/release-image/Dockerfile34-38
您可以将可执行文件放在 ENTRYPOINTD 目录中,从而在容器启动时执行自定义脚本。默认情况下,此目录设置为 /home/coder/entrypoint.d。
入口点脚本将在启动 code-server 之前查找并执行此目录中的所有可执行文件。
来源: ci/release-image/entrypoint.sh21-25 ci/release-image/Dockerfile52
您可以基于官方镜像创建自定义 Docker 镜像
为了让 code-server 能够代理到容器内运行的其他服务,您可能需要暴露额外的端口
这允许 code-server 代理容器内运行的 3000 端口服务的请求。
code-server 的典型 docker-compose.yml 文件可能如下所示
身份验证:当将 code-server 暴露到网络时,务必使用 PASSWORD 环境变量设置密码。
用户权限:使用 -u 标志以您的用户 ID 运行容器,以避免挂载卷的权限问题。
HTTPS:对于生产部署,请使用带有 HTTPS 的反向代理来保护与 code-server 的连接。
容器隔离:请注意,code-server 默认在容器内以 sudo 权限运行。在生产环境中,请考虑限制这些权限。
官方 Docker 镜像是 code-server 仓库中维护的,它使用多阶段构建过程将预构建的 Debian 包打包到 Docker 镜像中。
关键组件
来源: ci/release-image/Dockerfile3-61
如果您遇到挂载卷的权限问题,请确保您使用适当的用户 ID 运行容器
检查容器日志以获取错误信息
常见问题包括端口冲突或配置问题。
确保容器正在运行并且端口已正确映射
验证 code-server 是否在容器内监听 0.0.0.0(这是默认配置)。