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

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

相关推荐
❀͜͡傀儡师10 分钟前
docker部署Apache Answer 一款高效问答平台
docker·容器·apache
南烟斋..28 分钟前
Linux系统编程核心知识指南
linux·算法
C_心欲无痕1 小时前
Docker 核心概念和安装
运维·docker·容器
森旺电子1 小时前
Linux指令快速记忆
linux·运维·服务器
weixin_516023071 小时前
电子阻止本领 electronic stopping power
linux
开开心心就好1 小时前
免费无广告卸载工具,轻便安全适配全用户
linux·运维·服务器·网络·安全·启发式算法·1024程序员节
硬核子牙2 小时前
ebpf检测Linux系统要来了
linux
↘"LYong2 小时前
Centos升级Redis(7.4.1 ---> 7.4.6)
linux·redis
bedynamic2 小时前
Ubuntu虚拟机磁盘空间不足解决方案
linux·ubuntu
我不是稻草人2 小时前
Centos共享Mac文件
linux·macos·centos