使用 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 或后续步骤中添加相应命令即可。

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

相关推荐
草莓熊Lotso26 分钟前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
历程里程碑30 分钟前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
wdfk_prog8 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥9 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
金刚猿9 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
忆~遂愿9 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘9 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
JH_Kong9 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿10 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy64810 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程