使用 DevContainer 打造一个轻量级算法竞赛环境,无需担忧环境变更即可轻松写题
什么是 Dev Container
Dev Container 是一种基于容器化技术的开发环境配置方式,由 VS Code 扩展支持。它允许你为一个项目定义一个完全隔离的开发环境,从而确保开发者的工具链、依赖和配置在任何机器上都一致。
Dev Container 的核心概念
开发环境即代码:
通过配置文件(通常是 .devcontainer/devcontainer.json 和 Dockerfile),你可以将开发环境定义为代码的一部分,版本化并与团队共享。
所有开发者拉取项目后,都可以在几分钟内启动一个相同的开发环境。
基于容器:
使用 Docker 容器作为运行环境,将代码和依赖隔离在独立的环境中,而不会污染宿主系统。
容器可以基于通用的镜像(如 ubuntu, node, python)或自定义的镜像。
集成 VS Code:
VS Code 可以连接到容器内部,通过 Remote - Containers 插件使开发体验无缝。
开发者几乎感觉不到自己是在容器中工作,因为所有操作(如调试、终端、文件操作)都与本地开发一致。
前置环境
使用 Dev Container
目录结构如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
| .
├── .clang-format // C++格式化配置
├── .devcontainer // devcontainer主要目录
│ ├── Dockerfile
│ ├── devcontainer.json // 描述 Dev Container 的核心配置,比如基础镜像、安装扩展、转发端口、环境变量等
│ └── setup.sh
├── .vscode // vscode相关配置
│ ├── cpp.code-snippets // 代码块模版
│ └── settings.json // 自定义设置
└── code // 代码文件,懂得都懂
├── atcoder
└── codeforces
|
拉取仓库:
1
2
| git clone [email protected]:pjimming/acm-dev-container.git
code acm-dev-container
|
打开这个目录后,点击左下角的链接 UI(箭头所指)
点击蓝色小块
选择 Reopen in Container
选择在容器里重新打开
Docker 会根据 Dockerfile 自动拉取镜像,构建容器,配置所需要的环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| # 使用基于 GCC 的镜像作为基础镜像
FROM gcc:latest
# 更新系统并安装常用开发工具
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y \
build-essential \
g++ \
gdb \
cmake \
git \
vim \
wget \
curl \
unzip \
zsh && \
apt-get clean
# 安装 Oh My Zsh
RUN sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)" --unattended && \
chsh -s /bin/zsh && \
echo "export TERM=xterm-256color" >> ~/.zshrc
# 安装 Zsh 插件:zsh-autosuggestions 和 zsh-syntax-highlighting
RUN git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \
sed -i 's/plugins=(git)/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/g' ~/.zshrc
# 设置默认工作目录
WORKDIR /workspace
# 设置环境变量,使用 C++20 编译
ENV CXXFLAGS="-std=c++20 -D_GLIBCXX_DEBUG"
# 安装 C++ 工具:Clang Tidy、Clang Format(可选)
RUN apt-get install -y clang-tidy clang-format
# 设置默认终端为 Zsh
CMD ["/bin/zsh"]
|
等待启动完成后,就是一个可以愉快写题的环境了。
ABC390_A