在aarch64架构服务器编译docker-compose源码
前言
由于项目所需,在官网和网络上也没有找到对应aarch64架构服务器的docker-compose程序,在此记录docker-compose编译过程,包括python3.7的环境搭建,本文已CentOS Linux release 7.6.1810 (AltArch)系统为例。
docker compose github 地址:https://github.com/docker/compose.git
python3.7.0 地址:https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
Python3.7.0环境搭建
首先需要网络环境来安装gcc编译环境,或者通过rpm包离线安装,本文只说明在线安装gcc命令。
- 通过一下方式命令安装编译Python3环境(推荐第二种方式);
第一种方式只安装gcc编译相关的依赖:
第二种方式通过使用yum-builddep为编译环境安装缺失的依赖sudo yum -y install gcc gcc-c++ kernel-devel
sudo yum install yum-utils sudo yum-builddep python
- 获取Python3.7.0源码包;
使用curl命令或者使用wget命令(-c -b 代表后端运行下载命令,可以不带-c -b参数)下载Python-3.7.0.tgz
使用tar命令解压下载的Python-3.7.0.tgz文件cd /home # curl curl -O https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz # wget wget -c -b https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar -xf Python-3.7.0.tgz
- 开始编译并安装;
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install);
configure部分参数说明(全部参数说明请在源码中使用./configure --help查看):
–prefix 指定安装程序安装位置
–enable-shared 启用动态库(注意: Python环境务必添加此参数否则不会生成libpython3.so libpython3.7m.so libpython3.7m.so.1.0等动态依赖库文件)
在Python-3.7.0源码目录可以看到libpython3.so libpython3.7m.so libpython3.7m.so.1.0等动态依赖库文件,依赖库文件拷贝至/usr/lib64目录下;cd Python-3.7.0 ./configure --prefix=/usr/local/python3.7 --enable-shared --with-ssl make && make install
将/usr/local/python3.7/bin目录添加PATH环境变量,# 当前目录 /home/Python-3.7.0 cp libpython3.7m.so libpython3.so libpython3.7m.so.1.0 /usr/lib64/
# 写入export PATH=$PATH:/usr/local/python3.7/bin至/etc/profile文件 echo 'export PATH=$PATH:/usr/local/python3.7/bin' >> /etc/profile # 变量变更生效 source /etc/profile
- 查看python版本,到此Python3.7.0环境安装完成
python3.7 --version
Docker compose源码编译
- 获取Compose源码
cd /home # 直接下载zip curl -O https://github.com/docker/compose/archive/master.zip unzip -q master.zip mv compose-master compose # 通过git获取 git clone https://github.com/docker/compose.git
- 创建venv环境 python3以后版本支持venv
cd compose # 最后一个venv为工程python环境的目录可自定义 python3.7 -m venv venv
- 安装compose依赖(此步骤及以后步骤命令将在venv环境下执行)
# 切换venv环境(退出输入deactivate命令即可),进入成功后命令行前缀为(venv) [root@vin compose]# source ./venv/bin/activate # 设置开发环境及安装依赖(请注意PyNaCl依赖需要相关的python动态库,上文已经说明过) python setup.py develop # 安装打包依赖(也可以直接执行pip install pyinstaller==3.6) pip install -r ./requirements-build.txt # 查看安装的依赖包 pip list # 一下为博主安装完成后的依赖项 Package Version Location ------------------ ----------- ------------------- altgraph 0.17 attrs 19.3.0 bcrypt 3.1.7 cached-property 1.5.1 certifi 2020.6.20 cffi 1.14.0 chardet 3.0.4 cryptography 2.9.2 distro 1.5.0 docker 4.2.2 docker-compose 1.27.0.dev0 /home/allen/compose dockerpty 0.4.1 docopt 0.6.2 idna 2.10 importlib-metadata 1.7.0 jsonschema 3.2.0 paramiko 2.7.1 pip 10.0.1 pycparser 2.20 PyInstaller 3.6 PyNaCl 1.4.0 pyrsistent 0.16.0 python-dotenv 0.14.0 PyYAML 5.3.1 requests 2.24.0 setuptools 39.0.1 six 1.15.0 texttable 1.6.2 urllib3 1.25.9 websocket-client 0.57.0 zipp 3.1.0
- 开始编译docker-compose,当编译时出现找不到compose/GITSHA文件或目录时,请编译docker-compose.spec文件删除exe = EXE(中的
... , ( 'compose/GITSHA', 'compose/GITSHA', 'DATA' ) ...
编译完成后 dist/docker-compose 就是所需的程序文件pyinstaller -F ./docker-compose.spec
Docker-compose(aarch64)程序连接分享
后续
以上就是此次的记录,如果有问题请联系博主,欢迎收藏!