Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)

tar \

binutils \

freetype fontconfig \

;

ENV JAVA_HOME /usr/java/openjdk-8

ENV PATH J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

Default to UTF-8 file.encoding

ENV LANG C.UTF-8

RUN set -eux; \

\

arch=“ ( o b j d u m p = " (objdump=" (objdump="(command -v objdump)” && objdump --file-headers “$objdump” | awk -F ‘[:,]+[[:space:]]+’ ‘$1 == “architecture” { print $2 }’)"; \

case “$arch” in \

‘i386:x86-64’) \

downloadUrl=‘https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_8u292b10.tar.gz’; \

;; \

‘aarch64’) \

downloadUrl=‘https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_aarch64_linux_8u292b10.tar.gz’; \

;; \

*) echo >&2 “error: unsupported architecture: ‘$arch’”; exit 1 ;; \

esac; \

\

curl -fL -o openjdk.tgz “$downloadUrl”; \

curl -fL -o openjdk.tgz.asc “$downloadUrl.sign”; \

\

export GNUPGHOME=“$(mktemp -d)”; \

pre-fetch Andrew Haley’s (the OpenJDK 8 and 11 Updates OpenJDK project lead) key so we can verify that the OpenJDK key was signed by it

(https://github.com/docker-library/openjdk/pull/322#discussion_r286839190)

we pre-fetch this so that the signature it makes on the OpenJDK key can survive “import-clean” in gpg

gpg --batch --keyserver keyserver.ubuntu.com --recv-keys EAC843EBD3EFDB98CC772FADA5CD6035332FA671; \

TODO find a good link for users to verify this key is right (https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2019-April/000951.html is one of the only mentions of it I can find); perhaps a note added to https://adoptopenjdk.net/upstream.html would make sense?

no-self-sigs-only: https://salsa.debian.org/debian/gnupg2/commit/c93ca04a53569916308b369c8b218dad5ae8fe07

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”; \

see “update-ca-trust” script which creates/maintains this cacerts bundle

ln -sT /etc/pki/ca-trust/extracted/java/cacerts “$JAVA_HOME/jre/lib/security/cacerts”; \

\

https://github.com/oracle/docker-images/blob/a56e0d1ed968ff669d2e2ba8a1483d0f3acc80c0/OracleJava/java-8/Dockerfile#L17-L19

ln -sfT “$JAVA_HOME” /usr/java/default; \

ln -sfT “$JAVA_HOME” /usr/java/latest; \

for bin in “$JAVA_HOME/bin/”*; do \

base=“ ( b a s e n a m e " (basename " (basename"bin”)"; \

[ ! -e “/usr/bin/$base” ]; \

alternatives --install “/usr/bin/ b a s e " " base" " base""base” “$bin” 20000; \

done; \

\

basic smoke test

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

2 days ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B

2 days ago /bin/sh -c #(nop) ENV PATH=/usr/java/openjd… 0B

2 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/java/o… 0B

2 days ago /bin/sh -c set -eux; yum install -y … 144MB

2 years ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0B

2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B

2 years ago /bin/sh -c #(nop) ADD file:54b004357379717df… 202MB

  • 我这里已经推送到hub.docker.com上去了,执行以下命令即可下载到本地:

docker pull bolingcavalry/centos7.6-jdk8:0.0.3

CentOS+JDK+OpenCV镜像

  • 接下来可以集成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 \

&& source /etc/profile

RUN set -eux; \

yum install -y \

make \

cmake \

gcc \

gcc-c++ \

gtk±devel \

gimp-devel \

gimp-devel-tools \

gimp-help-browser \

zlib-devel \

libtiff-devel \

libjpeg-devel \

libpng-devel \

gstreamer-devel \

libavc1394-devel \

libraw1394-devel \

libdc1394-devel \

jasper-devel \

jasper-utils \

swig \

python \

libtool \

nasm \

build-essential \

ant \

unzip \

;

RUN set -eux; \

curl -fL -o opencv-3.4.3.zip https://codeload.github.com/opencv/opencv/zip/3.4.3; \

unzip opencv-3.4.3.zip; \

rm -rf opencv-3.4.3.zip; \

cd opencv-3.4.3; \

mkdir build; \

cd build; \

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local …; \

make; \

make install; \

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF …;\

make -j8; \

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

2 days ago /bin/sh -c set -eux; yum install -y … 638MB

2 days ago /bin/sh -c echo “export LC_ALL=en_US.UTF-8” … 1.84kB

2 days ago /bin/sh -c set -eux; arch="$(objdump… 209MB

2 days ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B

2 days ago /bin/sh -c #(nop) ENV PATH=/usr/java/openjd… 0B

2 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/java/o… 0B

2 days ago /bin/sh -c set -eux; yum install -y … 144MB

2 years ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0B

2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值