这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
之所以选择CentOS作为操作系统,是因为平时工作中最常用的就是它了
纵观OpenJDK官方的各种镜像,并没有发现CentOS作为操作系统的,因此自己动手吧,思路很简单:找到OpenJDK的Dockerfile文件,把它的基础镜像换成CentOS7.6即可
以下是Dockerfile的所有内容,可见核心是根据不同的操作系统下载文件然后安装,逻辑简单清晰就不多说了:
FROM centos:7.6.1810
RUN set -eux; <br /> yum install -y <br /> gzip <br /> tar <br /> binutils <br /> freetype fontconfig <br /> ;
ENV JAVA_HOME /usr/java/openjdk-8
ENV PATH $JAVA_HOME/bin:$PATH
ENV LANG C.UTF-8
RUN set -eux; <br /> <br /> arch="$(objdump="$(command -v objdump)" && objdump --file-headers "$objdump" | awk -F '[:,]+[[:space:]]+' '$1 == "architecture" { print $2 }')"; <br /> case "$arch" in <br /> 'i386:x86-64') <br /> downloadUrl='https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_8u292b10.tar.gz'; <br /> ;; <br /> 'aarch64') <br /> downloadUrl='https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_aarch64_linux_8u292b10.tar.gz'; <br /> ;; <br /> *) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; <br /> esac; <br /> <br /> curl -fL -o openjdk.tgz "$downloadUrl"; <br /> curl -fL -o openjdk.tgz.asc "$downloadUrl.sign"; <br /> <br /> export GNUPGHOME="$(mktemp -d)"; </p>
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys EAC843EBD3EFDB98CC772FADA5CD6035332FA671; \
gpg --batch --keyserver keyserver.ubuntu.com --keyserver-options no-self-sigs-only --recv-keys CA5F11C6CE22644D42C6AC4492EF8D39DC13168F; \
gpg --batch --list-sigs --keyid-format 0xLONG CA5F11C6CE22644D42C6AC4492EF8D39DC13168F \
| tee /dev/stderr \
| grep '0xA5CD6035332FA671' \
| grep 'Andrew Haley'; \
gpg --batch --verify openjdk.tgz.asc openjdk.tgz; \
rm -rf "$GNUPGHOME"; \
\
mkdir -p "$JAVA_HOME"; \
tar --extract \
--file openjdk.tgz \
--directory "$JAVA_HOME" \
--strip-components 1 \
--no-same-owner \
; \
rm openjdk.tgz*; \
\
rm -rf "$JAVA_HOME/jre/lib/security/cacerts"; \
ln -sT /etc/pki/ca-trust/extracted/java/cacerts "$JAVA_HOME/jre/lib/security/cacerts"; \
\
ln -sfT "$JAVA_HOME" /usr/java/default; \
ln -sfT "$JAVA_HOME" /usr/java/latest; \
for bin in "$JAVA_HOME/bin/"*; do \
base="$(basename "$bin")"; \
[ ! -e "/usr/bin/$base" ]; \
alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \
done; \
\
javac -version; \
java -version
写完之后执行docker build -t bolingcavalry/centos7.6-jdk8:0.0.1 .即可生成镜像,如果您有hub.docker.com的账号,还可以将其推送到中央仓库,给更多人使用
用history命令看看镜像内容,详情如下,合计五百多兆,已经不小了:
CN0014009475M:~ will$ docker history bolingcavalry/centos7.6-jdk8:0.0.1
IMAGE CREATED CREATED BY SIZE COMMENT
a5dead4a6505 2 days ago /bin/sh -c set -eux; arch="$(objdump… 209MB
我这里已经推送到hub.docker.com上去了,执行以下命令即可下载到本地:
docker pull bolingcavalry/centos7.6-jdk8:0.0.3
接下来可以集成OpenCV了,Dockerfile内容如下所示,基础镜像是刚刚做好的bolingcavalry/centos7.6-jdk8:0.0.1,先是安装一大堆编译所需的应用,然后下载OpenCV-3.4.3版本的源码,然后编译,就这么简单(但其间的调试工作还是不少的,不说了,说多了都是泪):
FROM bolingcavalry/centos7.6-jdk8:0.0.1
RUN echo "export LC_ALL=en_US.UTF-8" >> /etc/profile <br /> && source /etc/profile
RUN set -eux; <br /> yum install -y <br /> make <br /> cmake <br /> gcc <br /> gcc-c++ <br /> gtk+-devel <br /> gimp-devel <br /> gimp-devel-tools <br /> gimp-help-browser <br /> zlib-devel <br /> libtiff-devel <br /> libjpeg-devel <br /> libpng-devel <br /> gstreamer-devel <br /> libavc1394-devel <br /> libraw1394-devel <br /> libdc1394-devel <br /> jasper-devel <br /> jasper-utils <br /> swig <br /> python <br /> libtool <br /> nasm <br /> build-essential <br /> ant <br /> unzip <br /> ;
RUN set -eux; <br /> curl -fL -o opencv-3.4.3.zip https://codeload.github.com/opencv/opencv/zip/3.4.3; <br /> unzip opencv-3.4.3.zip; <br /> rm -rf opencv-3.4.3.zip; <br /> cd opencv-3.4.3; <br /> mkdir build; <br /> cd build; <br /> cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..; <br /> make; <br /> make install; <br /> cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..;<br /> make -j8; <br /> make install
写完之后执行docker build -t bolingcavalry/opencv3.4.3:0.0.3 .即可生成镜像,如果您有hub.docker.com的账号,还可以将其推送到中央仓库,给更多人使用
用history命令看看镜像内容,详情如下,倒吸一口凉气,这么大的体积,亲爱的读者们会不会打死我…:
CN0014009475M:~ will$ docker history bolingcavalry/opencv3.4.3:0.0.3
IMAGE CREATED CREATED BY SIZE COMMENT
f0306d7a2594 2 days ago /bin/sh -c set -eux; curl -fL -o opencv-… 2.99GB
我这里已经推送到hub.docker.com上去了,执行以下命令即可下载到本地:
docker pull bolingcavalry/opencv3.4.3:0.0.3
这里要提醒一下,opencv的编译是非常耗时的,请确保docker宿主机的性能不要太差,也请您耐心等待编译过程
至此,符合咱们要求的基础镜像bolingcavalry/opencv3.4.3:0.0.3已制作完成,有了它,咱们的Java应用所需的jdk和opencv就凑齐了,接下来的文章咱们一起去开发这个人脸检测的应用吧;
手机扫一扫
移动阅读更方便
你可能感兴趣的文章