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

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

相关推荐
如意.7594 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
Thera7774 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ5 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
安当加密7 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
内卷焦虑人士7 小时前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu
dddddppppp1238 小时前
qemu模拟的一个内核驱动 io口中断
linux
洛阳泰山9 小时前
MaxKB4j Docker Compose 部署指南
java·docker·llm·springboot·rag·maxkb4j
程序员老赵9 小时前
超全 Docker 镜像源配置指南|Windows/Mac/Linux一键搞定,拉镜像再也不卡顿
linux·后端·容器
门豪杰9 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
总要冲动一次9 小时前
离线安装 percona-xtrabackup-24
linux·数据库·mysql·centos