首先需要下载centos7镜像并运行
docker pull centos:7.9.2009
docker run -dit --name centos centos:7.9.2009
# 进入容器
docker exec -ti centos bash
安装依赖包
yum -y install gcc gcc-c++ make openssl ncurses-devel openssl-devel
需要安装升级cmake
wget https://cmake.org/files/v3.16/cmake-3.16.6.tar.gz
tar -zxf cmake-3.16.6.tar.gz
cd cmake-3.16.6
./configure --prefix=/usr/local/cmake
make && make install
设置环境变量
vim /etc/profile
export CMAKE_HOME=/usr/local/cmake
export PATH=$PATH:$CMAKE_HOME/bin
source /etc/profile
安装opencv4.1.1
# 下载地址
https://codeload.github.com/opencv/opencv/tar.gz/refs/tags/4.1.1
tar -zxf opencv-4.1.1.tar.gz
cd opencv-4.1.1
mkdir build
cd build/
#安装编译依赖包
yum install ant
# 编译
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..
make -j8
make install
# 将编译好的opencv_java411.so等动态库文件copy至容器系统目录下
cp lib/* /usr/lib64/
# 因为我这边需要的jdk是zulu版本
所以自动安装的jdk需要清除
rpm -qa | grep java
yum remove java-1.8.0-openjdk-headless-1.8.0.352.b08-2.el7_9.x86_64 java-1.8.0-openjdk-devel-1.8.0.352.b08-2.el7_9.x86_64 java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
删除不需要的文件(尽可能的缩小镜像大小)
rm -rf ynu-aps-1.0.0.jar opencv-4.1.1* cmake-3.16.6*
yum autoremove
安装jdk环境
# 提前下载好zulu版本的jdk1.8
tar -zxf jdk.tar.gz
cd zulu8.50.0.51-ca-jdk8.0.275-linux_x64/bin
./java -version
mv zulu8.50.0.51-ca-jdk8.0.275-linux_x64/ zulu8-jdk
设置jdk环境变量
vi /etc/profile
JAVA_HOME=/zulu8-jdk
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME JRE_HOME CLASSPATH PATH
source /etc/profile
java -version
测试
java -jar supervise-1.0.0.jar --spring.profiles.active=test
# 删除不需要的文件数据
rm -rf jdk.tar.gz
rm -rf app-1.0.0.jar supervise-1.0.0.jar
rm -rf supervise/
rm -rf app/
# 再次测试运行情况
java -jar supervise-1.0.0.jar --spring.profiles.active=test
# 发现会有找不到java命令的情况
直接创建软链接
sudo ln -s /zulu8-jdk/bin/java /bin/jar
sudo ln -s /zulu8-jdk/bin/java /bin/java
sudo ln -s /zulu8-jdk/bin/java /bin/javac
sudo ln -s /zulu8-jdk/bin/java /bin/javah
sudo ln -s /zulu8-jdk/bin/java /bin/javadoc
或
ln -s /zulu8-jdk/bin/java /bin/jar
ln -s /zulu8-jdk/bin/java /bin/java
ln -s /zulu8-jdk/bin/java /bin/javac
ln -s /zulu8-jdk/bin/java /bin/javah
ln -s /zulu8-jdk/bin/java /bin/javadoc
# 完美
保存我们制作好的镜像
docker ps -a 查看运行的centos镜像,复制镜像ID
![](https://img-blog.csdnimg.cn/img_convert/297c7d3b14d435f97a4bcec3be1b4dc1.png)
docker commit cecea9192b63 centos7-opencv411:v7.9-5
以下就是我们的opencv镜像
[gestep@devops ~]$ docker images | grep opencv
centos7-opencv411 v7.9-5 03dc067d74ce 10 days ago 1.28GB