2. 开发环境搭建:Python、Git、Docker、Jenkins 的安装与配置
说实话,刚入行那会儿我最怕的就是搭环境。项目还没写一行代码,光装工具就能折腾大半天。后来踩的坑多了,才慢慢摸出一套「稳、快、干净」的套路。这一章咱们就聊聊这四样家底——Python、Git、Docker、Jenkins。每样我都会把核心安装步骤、环境变量、版本验证、避坑点过一遍。
核心理念:开发环境要「可复现、可迁移、可销毁」。用 Docker 解决「在我机器上跑得好好的」,用 Jenkins 把部署从手动操作变成自动流水线。
2.1 Python 环境安装与虚拟环境
Python 版本管理是我最早栽跟头的地方。项目 A 要 3.6,项目 B 要 3.9,系统自带的 Python 又不能随便动。所以我现在一律用 pyenv 或 conda 做隔离。
2.1.1 Windows / macOS / Linux 通用推荐
- Windows:去官网下载
python-3.10.x-amd64.exe,安装时一定要勾选「Add Python to PATH」。这个不勾后面命令行会找不到 python,你会以为自己没装成功。 - macOS:用 Homebrew 装 ——
brew install python@3.10。别用系统自带的 2.7,太老了。 - Linux:
sudo apt install python3 python3-pip python3-venv。Ubuntu 20.04 以上默认就有 3.8+,足够用。
2.1.2 验证安装
python --version
Python 3.10.12
pip --version
pip 22.0.4 from /usr/lib/python3/dist-packages/pip (python 3.10)
2.1.3 虚拟环境 —— 这个必须养成习惯
我见过太多同事直接把包全局装到系统 Python 里,然后项目冲突了抓瞎。记住:每个项目一个虚拟环境。
# 创建虚拟环境
python -m venv venv
# 激活(Windows)
venv\Scripts\activate
# 激活(macOS/Linux)
source venv/bin/activate
# 退出
deactivate
我个人习惯把 venv 文件夹建在项目根目录下,并加到 .gitignore 里。这样别人克隆下来跑 python -m venv venv 就能复现。
2.1.4 依赖管理
用 requirements.txt 或 Pipfile 锁定版本。我曾经因为没锁版本,上线时 requests 库自动升级了个大版本,API 调用全崩了。
# 生成当前环境的依赖清单
pip freeze > requirements.txt
# 从清单恢复
pip install -r requirements.txt
2.2 Git 安装与 SSH 密钥配置
Git 是部署验证的基石。你想想看,没有版本控制,回滚靠复制文件夹,这谁受得了?我们要做到:代码有历史,每次部署有标记。
2.2.1 安装 Git
| 平台 | 方式 |
|---|---|
| Windows | git-scm.com 下载安装包,安装时选「Use Git from the command line and also from 3rd-party software」 |
| macOS | brew install git 或者用 Xcode Command Line Tools |
| Linux | sudo apt install git |
2.2.2 首次配置
git config --global user.name "你的名字"
git config --global user.email "you@example.com"
注意:邮箱最好和你的代码托管平台(GitHub/GitLab)一致,否则提交记录里会显示奇怪的头像。
2.2.3 SSH 密钥 —— 省掉每次输密码
我建议用 ed25519 算法,比 RSA 更安全更快。
ssh-keygen -t ed25519 -C "you@example.com"
# 一路回车,不要设密码(否则 Jenkins 无法自动拉取)
# 查看公钥
cat ~/.ssh/id_ed25519.pub
把公钥内容粘贴到 GitHub / GitLab / Gitee 的 SSH Key 设置里。然后用 ssh -T git@github.com 测试连通性。我第一次配完看到「Hi xxx! You've successfully authenticated」时,还挺有成就感的。
2.3 Docker 安装与镜像加速
Docker 是我现在部署的标配。环境全打包,服务器上一拉就跑,再也不怕系统版本不一致。
2.3.1 安装 Docker Engine
- Windows/macOS:直接装 Docker Desktop。注意 Windows 需要启用 WSL2,安装时按提示操作就行。
- Linux:用官方脚本或 apt 安装。推荐用
sudo apt install docker.io(Ubuntu 简化版),但你会发现版本可能旧一点。想用最新版去docs.docker.com/engine/install/ubuntu/走 repo 流程。
装完后记得把当前用户加入 docker 组,不然每次都得 sudo:sudo usermod -aG docker $USER,然后退出重登。
2.3.2 验证安装
docker --version
Docker version 24.0.7, build afdd53b
docker run hello-world
# 看到 Hello from Docker! 就说明成功了
2.3.3 配置镜像加速(国内用户必做)
不配加速的话,pull 个 nginx 镜像能等上半小时。我在腾讯云的时候踩过这个坑。
# Linux 编辑 /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
# 重启 Docker
sudo systemctl restart docker
2.3.4 常用命令速记
| 命令 | 说明 |
|---|---|
docker ps | 查看运行中的容器 |
docker images | 查看本地镜像列表 |
docker build -t myapp:1.0 . | 构建镜像 |
docker push 仓库地址/镜像名 | 推送镜像到仓库 |
2.4 Jenkins 安装与初始配置
Jenkins 是我们自动化部署的「大脑」。它能监听 Git 仓库的变化,自动拉代码、跑测试、构建镜像、甚至部署到服务器。
2.4.1 安装方式选择
我个人推荐用 Docker 跑 Jenkins,干净又方便升级。
# 拉取官方 LTS 镜像
docker pull jenkins/jenkins:lts
# 运行容器
docker run -d \
--name jenkins \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
--restart always \
jenkins/jenkins:lts
映射了两个端口:8080 是 Web 界面,50000 是构建节点的通信端口。数据卷 jenkins_home 保证重启后配置不丢。
2.4.2 初始化解锁
启动后去浏览器打开 http://localhost:8080,会让你输入管理员密码:
# 在宿主机上查初始密码
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
复制粘贴,点击「安装推荐的插件」。这一步会花几分钟,去泡杯咖啡吧。
2.4.3 创建第一个管理员用户
插件装完后按提示填用户名、密码、邮箱。注意邮箱配置后面发构建通知会用到。
2.4.4 配置全局工具
进入「Manage Jenkins → Tools」里配置 JDK、Git、Docker 等工具路径。如果用 Docker 容器跑的 Jenkins,内核里已经自带了 Git 和 Docker CLI,但需要把宿主机的 Docker 套接字挂载进去才能执行 docker 命令:
docker run -d \
--name jenkins \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart always \
jenkins/jenkins:lts
挂载 Docker 套接字会让容器拥有与宿主机同等的 Docker 权限。这在团队环境里要注意安全,建议只在内网开发环境这样做。
2.4.5 验证 Jenkins 与 Git、Docker 的联通
创建一个自由风格任务,在「构建」步骤里增加一个「执行 shell」:
# 测试 Git
git --version
# 测试 Docker
docker --version
# 测试构建一个简单镜像
docker build -t test-image .
点「立即构建」,看控制台输出全是绿色的 success 就对了。
2.5 工具链关系图
下面这张图把四种工具串了一遍。你能看到代码从本地到服务器的完整路径。
2.6 配置验证清单
最后,分享一个我每个项目都会跑的验证清单。拿去直接用,保证环境干干净净。
| 序号 | 检查项 | 验证命令 |
|---|---|---|
| 1 | Python 版本符合项目要求 | python --version |
| 2 | 虚拟环境已激活 | which python 应指向项目内路径 |
| 3 | Git 已配置 user.name 和 user.email | git config --global --list |
| 4 | SSH 密钥已添加到远程仓库 | ssh -T git@github.com 返回成功 |
| 5 | Docker 运行正常 | docker run hello-world |
| 6 | 镜像加速配置正确 | docker info | grep Registry 看到自己配置的 mirror |
| 7 | Jenkins 容器启动并解锁 | Web 面板可登录 |
| 8 | Jenkins 能执行 docker 命令 | 创建一个 shell 任务跑 docker ps |
环境搭好了,你接下来就能专心折腾「部署验证」和「回归测试」的核心逻辑了。记住,前期花半小时把工具体系搭稳,后面节省的是几十个小时的排错时间。