Commit e857251c by wuyang.zou

整理相关 容器过程中常用的 开发过程知识点,以及调试工作说明;

方便后续 开发交接
“
parent 938aa442
1、 下载交叉编译链包,并部署到 /opt/ 目录下:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.tar
【主要是安装运行在 x86_64 host能够编译 arm版本程序的源代码,aarch-*-gcc aarch-*g++】
【 /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc || aarch64-linux-gnu-g++ 】
2、安装 x86_64 host 能够运行的 Qt Creater 以及 Qt源代码: qt-everywhere-src-5.12.9.tar.xz
【 /home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/mkspecs/myaarch64 】
3、编译 能支持arm版本 的 qmake 编译器文件,以及arm版本相关 qt 库文件;
【需依赖提前使用 aarch-*-gcc 编译好 arm 版本的 openssl 头文件 和 库】
【/home/freemud/arm_build_all/openssl-1.1.1v-arm 】
【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/myconfigure.sh】
【 ./configure -prefix /home/freemud/arm_build_all/qt_aarch64 \
-openssl-linked \
OPENSSL_PREFIX='/home/freemud/arm_build_all/openssl-1.1.1v-arm/built_arm_ok' \
OPENSSL_LIBS='-lssl -lcrypto' \
.......\
4、使用 x86_64 host 能够运行的 Qt Creater 新增能 构建arm程序 qmake编译器套件;
【构建完成:/home/freemud/arm_build_all/qt_aarch64/bin/qmake && lib && include】
5、使用arm版本的qmake套件 编译现有的 PmsPlugin 程序的源代码;
【openssl 库版本原因,需要调整 长连接部分(加解密函数方法),注释源代码,一步一个脚印调试 应用程序异常退出的原因】
6、使用 Mac电脑(M1 M2 cpu架构,就是 arm架构)安装 docker,再安装 ubuntu:20.04 容器镜像;
在镜像中安装 mysqlclient-dev 包,从而获得 arm 版本的 libmysqlclient.so 和 include 文件;
【这样就不用在 x86_64 host 中编译 arm 版本的 libmysqlclient.so (此过程非常复杂)】
【/home/freemud/arm_build_all/mysql-client】
7、使用 arm版本的 libmysqlclient.so 和 include 头文件,编译 Qt 应用程序需要依赖的 libqsqlmysql.so 库文件
(应用程序需要依赖这个文件,对Mysql数据库进行连接,并进行数据操作)
【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/src/plugins/sqldrivers】
【/home/freemud/arm_build_all/qt-everywhere-src-5.12.9/qtbase/plugins/sqldrivers/libqsqlmysql.so】
8、将 应用程序的依赖库进行 打包,拷贝到 容器镜像中进行运行测试,以及后期的联调;
【/home/freemud/arm_build_all/build-takeout-aarch64_qt_5_12-Release/bin/PmsPlugin && lib && config 】
9、将容器镜像进行打包,为后续 lib办公室的物理机进行运行测试;
【无】
From ubuntu:20.04
ENV TZ Asia/Shanghai
RUN apt-get update && apt-get install -y tzdata
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
RUN echo 'Asia/Shanghai' >/etc/timezone
COPY ./bin /data/bin
Copy ./run.sh /data
WORKDIR /data
ENTRYPOINT ["bash","run.sh"]
文件用途介绍:
1、Dockerfile 用于将开发机上可执行程序 以及依赖库等文件,进行打包成下镜像文件;
打包镜像文件命令:sudo docker build . -t harbor-ppe1.eniot.io/edge/pcs-plugin:tag_pcs-plugin_v4_20231024_002
2、run.sh. 是应用程序启动脚本文件;
3、bin 文件夹是 PmsPlugin 程序可以运行的全部程序文件目录;
======== 开发机器环境介绍 ===========
机器ip:10.73.194.155
账户:admin
密码:En&viSi0n!#%
======== 插件的心跳检查接口 ===========
curl --location 'http://127.0.0.1:24409/healthCheck' \
--header 'Content-Type: application/json' \
--data ''
======== 手动启动本地镜像(非系统角色)环境;初期调试使用 ================
sudo docker run --net="host" -p 24409:24409 --name pcsPlugin33 -it -d pcs-plugin:v4.2023.10.24 bash
======== 将镜像保存到本地文件; ================
sudo docker image ls 【查看镜像列表】
sudo docker save -o pcs-plugin_v4.2023.10.24.tar pcs-plugin:v4.2023.10.24 【将目标 镜像(仓库:tag)保存本地压缩包文件】
sudo chown admin:admin /home/admin/pcsPlugin/pcs-plugin_v4.2023.10.24.tar 【修改压缩文件的 Owner,方便后续的 拷贝】
sudo scp -r admin@10.73.194.155:/home/admin/pcsPlugin/pcs-plugin_v4.2023.10.24.tar /Users/wzou/Desktop/Arm_Pcs_Ctr 【scp拷贝】
sudo docker load -i pcs-plugin_v4.2023.10.24.tar 【将镜像压缩文件,导入到docker的镜像列表中】
======= docker 扩展使用 ================
https://blog.csdn.net/weixin_45505313/article/details/125020076
将正在运行的容器打包成 image:
sudo docker commit -a "wuyang.zou" -m "Create PcsPlugin Init Image" bf4ef2b8f77e pcs-plugin:v4.2023.10.24
sha256:49fba71465aa39e1db64fd21a68f52e070e010d4e89819c904de0a3a95514e15
【保存镜像】docker save 镜像id -o E:\Docker\redis.tar 仓库名
【加载镜像】docker load -i E:\Docker\redis.tar
-------------------------------------------------------------
【将镜像以一个指定名字的容器运行起来】docker run -d -p 24409:24409 --name pcsPlugin ubuntu
【停止正在运行的容器】docker stop pcsPlugin
【以bash与正在运行的容器进行交互】docker exec -it pcsPlugin bash
ubuntu 20.04. images id : 15c9d636cadd
-----------------------------------------------------------------------------------
sudo docker ps --all 【有停止的容器】
sudo docker container ls 【容器id: fae29cc16c70】
sudo docker container logs
sudo docker run --net="host" -p 24409:24409 --name pcsPlugin3 -v /home/admin/pcsPlugin:/data -it -d ubuntu:20.04 bash
sudo docker exec -it c67b5bf46833 bash 【进入正在运行的容器】
=============== 自己的镜像运行设置 时区的配置 ==================================
ENV TZ=Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata 作者:Docker内容分享 https://www.bilibili.com/read/cv25758166/ 出处:bilibili
#! /bin/bash
#export LD_LIBRARY_PATH="/opt/lib:/home/admin/pcsPlugin/bin/lib:/home/admin/pcsPlugin/bin/lib64"
export LD_LIBRARY_PATH="/opt/lib:/data/bin/lib:/data/bin/lib64"
#/home/admin/pcsPlugin/bin/PmsPlugin
/data/bin/PmsPlugin
#! /bin/bash
export LD_LIBRARY_PATH="/opt/lib:/home/admin/pcsPlugin/bin/lib:/home/admin/pcsPlugin/bin/lib64"
#export LD_LIBRARY_PATH="/opt/lib:/data/bin/lib:/data/bin/lib64"
/home/admin/pcsPlugin/bin/PmsPlugin
#/data/bin/PmsPlugin
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment