基础环境
在 windows 本机,使用 Docker Desktop + WSL2 搭建了一套 Linux 环境。WSL2 使用的 Ubuntu 22 作为内核。
前言
工作中接手了一个 Python 项目,因为一些依赖项(如 openssl)的原因,Windows本机无法 完全安装依赖并运行。于是基于 Linux 搭建一套开发环境。主要步骤如下:
-
基于
CenteOs 7.9为基础镜像,运行容器,在容器内,将Python3环境搭建好,再将容器打成一个镜像(作为环境镜像)。这样得到一个纯净的Python3开发环境 -
创建容器时,使用
-v参数,将代码目录挂载到Windows本机,本地代码改动后可实时与容器中的代码同步。 这样即可实现,代码与运行环境分离,互不干扰,也可提升开发效率。原理类似 以前的远程开发机 或者 本地虚拟机作为开发机。 -
后续只需要本地修改代码,再进入容器内,运行项目就好。配置好
端口映射,即可正常访问。
过程
1. 下载 CenteOs 7.9 镜像
docker pull docker.io/library/centos:centos7.9.2009
2. 启动 CenteOs 7.9 容器。命名为项目名称
容器中的代码目录,放在 /data/web/,与 Windows 本机目录做好映射。
此处我为了方便,端口统一设置为 80,可根据实际情况更改。
docker run -it --name=devops-backend -p 80:80 -v /mnt/d/jk-work/devops-backend:/data/web/devops-backend centos:centos7.9.2009 bash
执行命令后,会进入容器内部,后续操作皆在容器内进行
3. 安装 Python3 环境
- 安装一些 前置依赖包
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum -y install libffi-devel
-
下载解压 Python3 安装包。如果没有
wget,需要先yum install wget安装包放在
/usr/local
cd /usr/local
wget https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz
tar -xvf Python-3.7.17.tgz
- 新建
/usr/local/python3目录作为编译目录。执行 配置 和 编译
cd /usr/local/Python-3.7.17
# 配置路径
mkdir /usr/local/python3
./configure --prefix=/usr/local/python3
# 编译
make
make install
- 创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
- 查看是否安装成功
4. 安装项目依赖,run 起来(仅供参考)
以下是我的业务项目,可忽略,视实际情况为准,只是记录下执行流程。
特别注意:要使用 python3 和 pip3。
cd /data/web/devops-backend
# 安装依赖
pip3 install -r requirements.txt
# 初始化数据库
python3 manage.py makemigrations
# 运行
python3 manage.py runserver 0.0.0.0:80
初始化和运行过程中出现一些报错:
ModuleNotFoundError: No module named 'dotenv'。安装依赖即可解决
pip3 install python-dotenv
ValueError: Unable to configure handler 'default'。原因是配置问题,没有创建 logs 目录
mkdir logs
5. 完成。在 windows 宿主机访问 http://127.0.0.1:80,即可看到访问成功。
将 容器 保存为镜像文件
将容器保存为镜像
注意 save 的镜像,要使用 load 去加载
# commit 将容器存为镜像
docker commit -a '阿策' -m 'devops-backend开发环境镜像' [容器ID或容器名] devops-backend:dev
# 归档。使用 docker export + import 也可以的
docker save -o devops-backend_dev.tar devops-backend:dev
至此,一个 项目级 的 Python3 开发环境 镜像就打好啦,可以把开发环境到处跑啦,只需要开发者安装好了 Docker 就行。
运行新镜像,在容器内运行服务
docker load -i devops-backend_dev.tar
docker run -it --name=devops-backend_dev -p 80:80 -v /mnt/d/jk-work/devops-backend:/data/web/devops-backend devops-backend:dev bash
# 以下步骤时容器内操作
cd /data/web/devops-backend
python3 manage.py runserver 0.0.0.0:80