这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
-
如果您看过《三分钟极速体验:Java版人脸检测》一文,甚至动手实际操作过,您应该会对背后的技术细节感兴趣,接下来就请随欣宸一起动手实战,从无到有将这个应用开发出来;
-
首先确定咱们的目标:
-
开发出java版的人脸检测应用
-
将此应用制作成docker镜像
-
在docker环境运行这个应用
- 基于上述目标,我们可以确定以下操作步骤:
-
准备好docker基础镜像
-
开发java应用
-
将java应用打包成package文件,集成到基础镜像中,得到最终的java应用镜像
- 本篇的目标就是上述第一步:准备好docker基础镜像
关于人脸检测应用的基础镜像
- 如果您有过制作java应用镜像的经历,一定会产生疑问:如下图红框所示,一般不都是把OpenJDK的官方镜像作为基础镜像吗?为啥要拿一篇文章来讲基础镜像的事情?
-
对于人脸检测的应用来说,OpenJDK的官方镜像是不够用的,因为用java实现人脸检测需要一个关键技术:javacv,在javacv运行过程中需要用到opencv的一些本地库,因此需要在运行环境中安装opencv
-
如下图所示,一个人脸检测应用自下而上由以下六部分构成,如果将底部的操作系统、JDK、OpenCV做成基础镜像就方便多了,咱们开发应用的时候只要需关注上面三层即可,而上面三层不就是个普通的maven工程吗?
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210719070625993.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
ubmV0L2JvbGluZ19jYXZhbHJ5,size_16,color_FFFFFF,t_70)
- 至此,聪明的您对接下来要做的事情应该很清楚了:编写Dockerfile文件用来制作镜像,这个镜像中要有CentOS + JDK1.8 + OpenCV
分两步走
-
我打算先做一个CentOS + JDK的镜像,在此基础上再做一个集成了OpenCV的镜像,这样在一些不需要OpenCV的场景中,我还能单独使用CentOS + JDK1.8的镜像
-
分析完成,开始动手吧
CentOS + JDK的镜像
-
之所以选择CentOS作为操作系统,是因为平时工作中最常用的就是它了
-
纵观OpenJDK官方的各种镜像,并没有发现CentOS作为操作系统的,因此自己动手吧,思路很简单:找到OpenJDK的Dockerfile文件,把它的基础镜像换成CentOS7.6即可
-
以下是Dockerfile的所有内容,可见核心是根据不同的操作系统下载文件然后安装,逻辑简单清晰就不多说了:
FROM centos:7.6.1810
RUN set -eux; \
yum install -y \
gzip \
tar \
binutils \
freetype fontconfi