基于 Docker + debian:trixie-slim(13) + Nix 的容器内开发环境
- Nix nixpkgs unstable
- 系统级主要组件:
openssh-server xz-utils curl wget tree make git vim docker unzip gzip jq
- 编程语言:
Rust Go NodeJS uv
- 可手动安装组件:
EXTS="zoxide hugo skopeo" for ext in $EXTS; do curl -L "s.fx4.cn/$ext" | bash; done
compose.yml
services:
devenv:
image: jetsung/devenv:latest
container_name: devenv
hostname: devenv
restart: unless-stopped
privileged: true
env_file:
- ./.env
# - ./cn.env
ports:
- ${SSH_PORT:-32222}:32222
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${HOME:-/srv}/workspaces:/workspaces
- ./data/.ssh:/root/.ssh
- ./data/.vscode-server:/root/.vscode-server
.env
TZ=Asia/Shanghai
SSH_PORT=32222
cn.env
## uv
UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple/
## rust
RUSTUP_DIST_SERVER=https://rsproxy.cn
RUSTUP_UPDATE_ROOT=https://rsproxy.cn/rustup
## nodejs
NVM_NODEJS_ORG_MIRROR=https://mirrors.ustc.edu.cn/node/
NODE_MIRROR=https://mirrors.ustc.edu.cn/node/
## go
GOPROXY=https://goproxy.cn,https://goproxy.io,direct
- 设置时区
-
外部文件
compose.yml
TZ=Asia/Shanghai
-
容器内设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
# 预览构建信息
docker buildx bake --print
# 执行构建
docker buildx bake
测试
docker run --rm -it devenv:local bash
# 容器内执行
dev
# 依次执行
go version
uv --version
rustup default stable
# 安装全局 Python
uv python install --default
- 添加软件
vi /etc/nix/devflake/flake.nix
# 向 “buildInputs = with pkgs; [ " 内添加软件
- 配置环境变量
vi /etc/nix/devflake/flake.nix
# 在 shellHook = '' 内添加环境变量