基于docker打包code server镜像的范例(2025/10/26更新)
眨眼睛亲测可用,强烈建议使用魔法
项目结构
code-server-test/
├── Dockerfile # Docker 镜像构建文件
├── docker-compose.yml # Docker Compose 编排配置
├── test.txt # 测试文件
└── README.md # 项目文档(本文件)
文件说明
1. Dockerfile
用途:定义 Docker 镜像的构建步骤
内容:
FROM ubuntu:22.04
WORKDIR /usr/src/app# 替换为清华镜像源
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list# 安装必要的依赖
RUN apt-get update && apt-get install -y \curl \&& rm -rf /var/lib/apt/lists/*# 安装VS Code Server
RUN curl -fsSL https://code-server.dev/install.sh | sh# 静态打包所有项目文件
COPY . .# 暴露端口:VS Code Server默认端口8080
EXPOSE 8080# 启动命令
CMD ["code-server", "--bind-addr", "0.0.0.0:8080", "/usr/src/app"]
说明:
- 使用 Ubuntu 22.04 作为基础镜像
- 配置清华镜像源加速下载
- 安装 curl 和 code-server
- 将当前目录文件复制到容器的
/usr/src/app - 暴露 8080 端口供访问
- 启动 code-server 服务
2. docker-compose.yml
用途:Docker Compose 服务编排配置
内容:
version: '3'services:code-server-test:build:context: .no_cache: true # 如果要强制重新构建,取消注释这行image: code-server-test:latestcontainer_name: code-server-testports:- "8080:8080"environment:- PASSWORD=123456volumes:- code-server-data:/usr/src/appvolumes:code-server-data:
配置说明:
- 服务名:
code-server-test - 镜像名:
code-server-test:latest - 容器名:
code-server-test - 端口映射:
8080:8080(主机:容器) - 环境变量:
PASSWORD=123456(code-server 登录密码) - 数据卷:
code-server-data挂载到/usr/src/app(持久化存储) - 构建选项:
no_cache: true(禁用缓存,强制重新构建)
3. test.txt
用途:测试文件
内容:
123
说明:简单的测试文件,用于验证容器运行和文件访问
使用说明
启动服务
docker compose up -d
停止服务
docker compose down
重新构建
docker compose build --no-cache
查看日志
docker compose logs -f
命令行方式启动
docker run -d --name code-server-test -p 8080:8080 -e PASSWORD=123456 -v code-server-data:/usr/src/app code-server-test:latest
访问方式
- 浏览器访问:
http://localhost:8080 - 登录密码:
123456
命名规则
Docker Compose 命名规则
- 镜像名:
项目名-服务名:标签→server-code-test-code-server-test:latest - 容器名:手动指定 →
code-server-test - 卷名:
项目名_卷名→server-code-test_code-server-data
自定义命名:
- 在
docker-compose.yml中添加image: code-server-test:latest自定义镜像名
常见问题
1. 密码不生效
- 原因:列表形式中加了引号,导致密码包含引号字符
- 解决:使用
- PASSWORD=123456(不加引号)
