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

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

相关推荐
宴之敖者、13 分钟前
Linux——git和gdb
linux·运维·git
TangDuoduo000524 分钟前
【Linux字符设备驱动】
linux·驱动开发
代码游侠25 分钟前
学习笔记——Linux内核与嵌入式开发2
linux·运维·arm开发·嵌入式硬件·学习·架构
郝学胜-神的一滴28 分钟前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生
小义_38 分钟前
【Docker】知识一
linux·docker·云原生·容器
wefg144 分钟前
【Linux】进程地址空间深入理解
linux·运维·服务器
ZHANG13HAO1 小时前
android13 4G网络环境和wifi内网说明
linux·服务器·网络
Linux运维技术栈1 小时前
Magento 2.3.5 宝塔Linux环境完整安装指南(避坑版+图文详解)
linux·运维·服务器
古月-一个C++方向的小白1 小时前
Linux——命令行参数与环境变量
linux·运维
qinyia1 小时前
使用AI助手完成服务器系统备份迁移任务
linux·运维·服务器