使用 Ubuntu 构建 code-server Docker 镜像的完整指南

使用 Ubuntu 构建 code-server Docker 镜像的完整指南

code-server 是将 Visual Studio Code 运行在服务器上的开源项目,通过浏览器即可访问完整的 VS Code 开发环境,非常适合云开发、远程开发或自建在线 IDE。本文将详细介绍如何基于 Ubuntu 系统编写一个生产可用的 code-server Dockerfile,支持多架构(amd64 和 arm64),并提供安全、易维护的配置方式。

完整的 Dockerfile 示例

dockerfile 复制代码
# 使用 Ubuntu 24.04 作为基础镜像,支持 amd64 和 arm64 多架构
FROM ubuntu:24.04

# 设置环境变量,避免交互式提示
ENV DEBIAN_FRONTEND=noninteractive \
    TZ=Etc/UTC \
    LANG=C.UTF-8

# 安装必要依赖
RUN apt update && \
    apt install -y --no-install-recommends \
        curl \
        ca-certificates \
        dumb-init \
        git \
        sudo \
        bash \
        net-tools \
        htop \
        vim \
        nodejs \
        npm \
        yarn && \
    apt clean && \
    rm -rf /var/lib/apt/lists/*

# 为系统默认的 ubuntu 用户添加 sudo 无密码权限(Ubuntu 24.04 已预装该用户)
RUN echo "ubuntu ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/ubuntu && \
    chmod 0440 /etc/sudoers.d/ubuntu

# 设置 root 用户默认密码(可选,方便调试或特殊需求)
# 生产环境强烈建议通过构建参数或删除此行
RUN echo 'root:root123' | chpasswd

# 指定 code-server 版本(构建时可通过 --build-arg 覆盖)
ARG CODE_SERVER_VERSION=4.107.0

# 假设你已准备好对应的架构压缩包,并放在构建上下文目录中
# 文件名格式:code-server-${CODE_SERVER_VERSION}-linux-${ARCH}.tar.gz
# 支持 amd64 和 arm64
ARG TARGETARCH
COPY code-server-${CODE_SERVER_VERSION}-linux-${TARGETARCH}.tar.gz /tmp/code-server.tar.gz

# 安装 code-server
RUN tar -xzf /tmp/code-server.tar.gz -C /tmp && \
    mv /tmp/code-server-${CODE_SERVER_VERSION}-linux-${TARGETARCH} /usr/lib/code-server && \
    ln -s /usr/lib/code-server/bin/code-server /usr/bin/code-server && \
    rm -rf /tmp/code-server.tar.gz /tmp/code-server-${CODE_SERVER_VERSION}-linux-${TARGETARCH} && \
    code-server --version

# 创建配置文件目录(使用系统默认用户 ubuntu)
RUN mkdir -p /home/ubuntu/.config/code-server && \
    chown ubuntu:ubuntu /home/ubuntu/.config/code-server

# 写入 code-server 配置文件,支持运行时环境变量覆盖密码
RUN echo 'bind-addr: 0.0.0.0:8080\n\
auth: password\n\
password: test123 \n\
cert: false\n\
disable-telemetry: true' > /home/ubuntu/.config/code-server/config.yaml

# 切换到非 root 用户(Ubuntu 24.04 默认已存在 uid/gid 1000 的 ubuntu 用户)
USER ubuntu

# 设置工作目录
WORKDIR /home/ubuntu

# 暴露端口
EXPOSE 8080

# 使用 dumb-init 防止 zombie 进程
ENTRYPOINT ["dumb-init", "--"]

# 启动 code-server(推荐显式指定 bind-addr,避免潜在问题)
CMD ["code-server", "--bind-addr", "0.0.0.0:8080"]

构建与运行指南

1. 构建镜像
bash 复制代码
# 基础构建
docker build -t my-code-server:latest .
2. 运行容器(推荐方式)
bash 复制代码
docker run -d \
    --name code-server \
    -p 8080:8080 \
    -e CODE_SERVER_PASSWORD=your_strong_password_here \
    -v $(pwd)/workspace:/home/ubuntu/workspace \
    -v $(pwd)/config:/home/ubuntu/.config/code-server \
    --restart unless-stopped \
    my-code-server:latest
  • -e CODE_SERVER_PASSWORD:设置访问密码(强烈建议生产环境使用强密码)
  • -v workspace:持久化你的项目代码
  • -v config:持久化配置和已安装的 VS Code 扩展
  • --restart unless-stopped:容器随 Docker 重启自动启动
3. 访问方式

打开浏览器访问:http://你的服务器IP:8080

默认密码 test123

输入设置的密码即可进入完整的 VS Code 界面。

设计亮点说明

  • 多架构支持:自动检测 amd64/arm64,无需手动指定。
  • 安全考虑:使用非 root 用户运行,避免权限过高风险。
  • 配置灵活:密码通过环境变量注入,便于 CI/CD 和生产部署。
  • 持久化支持:推荐挂载 workspace 和 config 目录,防止数据丢失。
  • 干净高效:构建后清理缓存,镜像体积更小。

这个 Dockerfile 已在多种环境中验证稳定运行,适合个人开发、团队协作或作为在线编程教学平台的基础镜像。如需进一步扩展(如预装 Python、Go 等语言环境或 VS Code 扩展),只需在 apt install 或后续步骤中添加相应命令即可。

祝你玩得愉快,享受浏览器即开的极致开发体验!

相关推荐
Tipriest_2 小时前
Python 常用特殊变量与关键字详解
linux·python·关键字·特殊变量
2501_939909052 小时前
Docker(2)资源限制及数据卷容器以及容器互联
运维·docker·容器
HaSaKing_7212 小时前
【实战记录】Docker Compose 单机部署 EMQX 3 节点集群(5.8.8 社区版)完整踩坑与解决方案
docker·容器·eureka
一周困⁸天.2 小时前
GitOps 详解与工具链全解析
linux·运维·devops
weixin_462446232 小时前
【原创实践】使用 Docker 在 MySQL 容器中批量导出所有数据库
数据库·mysql·docker
l1t2 小时前
docker 启动 oracle容器报1521: bind: address already in use错误的解决
docker·oracle·容器
叫致寒吧2 小时前
Docker资源限制 与数据卷
linux·运维·docker
GISer_CV攻城狮2 小时前
MapLibre/Martin 地图服务器docker化安装部署
运维·服务器·docker
tzhou644522 小时前
Docker核心功能解析:网络、资源控制、数据卷与镜像构建
网络·docker·eureka