美文网首页我爱编程
docker | tomcat- 8.0.52-jre8-alp

docker | tomcat- 8.0.52-jre8-alp

作者: hisenyuan | 来源:发表于2018-06-21 14:12 被阅读0次

    官方基于alpine linux 的tomcat镜像 https://store.docker.com/images/tomcat
    tomcat根目录为:/usr/local/tomcat

    一、Dockerfile

    FROM openjdk:8-jre-alpine
    
    ENV CATALINA_HOME /usr/local/tomcat
    ENV PATH $CATALINA_HOME/bin:$PATH
    RUN mkdir -p "$CATALINA_HOME"
    WORKDIR $CATALINA_HOME
    
    # let "Tomcat Native" live somewhere isolated
    ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
    ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR
    
    # see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
    # see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
    ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
    
    ENV TOMCAT_MAJOR 8
    ENV TOMCAT_VERSION 8.0.52
    ENV TOMCAT_SHA512 23ba3c005d2e1bff30360a7aca5882ba7acaef0001395b1f77eb182c1f9c6a48db7f39b9f71ebdfb20668eca32c5f03bf00364f77d47e368850a794f6d65ea56
    
    ENV TOMCAT_TGZ_URLS \
    # https://issues.apache.org/jira/browse/INFRA-8753?focusedCommentId=14735394#comment-14735394
        https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
    # if the version is outdated, we might have to pull from the dist/archive :/
        https://www-us.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
        https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
        https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz
    
    ENV TOMCAT_ASC_URLS \
        https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \
    # not all the mirrors actually carry the .asc files :'(
        https://www-us.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \
        https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \
        https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc
    
    RUN set -eux; \
        \
        apk add --no-cache --virtual .fetch-deps \
            gnupg \
            \
            ca-certificates \
            openssl \
        ; \
        \
        export GNUPGHOME="$(mktemp -d)"; \
        for key in $GPG_KEYS; do \
            gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
        done; \
        \
        success=; \
        for url in $TOMCAT_TGZ_URLS; do \
            if wget -O tomcat.tar.gz "$url"; then \
                success=1; \
                break; \
            fi; \
        done; \
        [ -n "$success" ]; \
        \
        echo "$TOMCAT_SHA512 *tomcat.tar.gz" | sha512sum -c -; \
        \
        success=; \
        for url in $TOMCAT_ASC_URLS; do \
            if wget -O tomcat.tar.gz.asc "$url"; then \
                success=1; \
                break; \
            fi; \
        done; \
        [ -n "$success" ]; \
        \
        gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz; \
        tar -xvf tomcat.tar.gz --strip-components=1; \
        rm bin/*.bat; \
        rm tomcat.tar.gz*; \
        rm -rf "$GNUPGHOME"; \
        \
        nativeBuildDir="$(mktemp -d)"; \
        tar -xvf bin/tomcat-native.tar.gz -C "$nativeBuildDir" --strip-components=1; \
        apk add --no-cache --virtual .native-build-deps \
            apr-dev \
            coreutils \
            dpkg-dev dpkg \
            gcc \
            libc-dev \
            make \
            "openjdk${JAVA_VERSION%%[-~bu]*}"="$JAVA_ALPINE_VERSION" \
            openssl-dev \
        ; \
        ( \
            export CATALINA_HOME="$PWD"; \
            cd "$nativeBuildDir/native"; \
            gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \
            ./configure \
                --build="$gnuArch" \
                --libdir="$TOMCAT_NATIVE_LIBDIR" \
                --prefix="$CATALINA_HOME" \
                --with-apr="$(which apr-1-config)" \
                --with-java-home="$(docker-java-home)" \
                --with-ssl=yes; \
            make -j "$(nproc)"; \
            make install; \
        ); \
        rm -rf "$nativeBuildDir"; \
        rm bin/tomcat-native.tar.gz; \
        \
        runDeps="$( \
            scanelf --needed --nobanner --format '%n#p' --recursive "$TOMCAT_NATIVE_LIBDIR" \
                | tr ',' '\n' \
                | sort -u \
                | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
        )"; \
        apk add --virtual .tomcat-native-rundeps $runDeps; \
        apk del .fetch-deps .native-build-deps; \
        \
    # sh removes env vars it doesn't support (ones with periods)
    # https://github.com/docker-library/tomcat/issues/77
        apk add --no-cache bash; \
        find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +
    
    # verify Tomcat Native is working properly
    RUN set -e \
        && nativeLines="$(catalina.sh configtest 2>&1)" \
        && nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')" \
        && nativeLines="$(echo "$nativeLines" | sort -u)" \
        && if ! echo "$nativeLines" | grep 'INFO: Loaded APR based Apache Tomcat Native library' >&2; then \
            echo >&2 "$nativeLines"; \
            exit 1; \
        fi
    
    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    

    二、大小(不包括war)

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    tomcat-8            latest              3d8bdf7eac0d        2 hours ago         106MB
    

    三、启动命令

    docker run -d -v /home/hisenyuan/docker/war:/usr/local/tomcat/webapps -p 8080:8080 3d8bdf7eac0d
    

    四、启动日志

    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/lib/jvm/java-1.8-openjdk/jre
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    21-Jun-2018 05:57:44.529 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.52
    21-Jun-2018 05:57:44.532 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Apr 28 2018 16:24:29 UTC
    21-Jun-2018 05:57:44.533 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.52.0
    21-Jun-2018 05:57:44.533 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
    21-Jun-2018 05:57:44.533 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.4.0-62-generic
    21-Jun-2018 05:57:44.535 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
    21-Jun-2018 05:57:44.536 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-1.8-openjdk/jre
    21-Jun-2018 05:57:44.536 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_171-b11
    21-Jun-2018 05:57:44.536 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
    21-Jun-2018 05:57:44.537 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
    21-Jun-2018 05:57:44.538 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
    21-Jun-2018 05:57:44.539 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
    21-Jun-2018 05:57:44.540 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    21-Jun-2018 05:57:44.541 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
    21-Jun-2018 05:57:44.541 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
    21-Jun-2018 05:57:44.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
    21-Jun-2018 05:57:44.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
    21-Jun-2018 05:57:44.544 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
    21-Jun-2018 05:57:44.544 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
    21-Jun-2018 05:57:44.545 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library 1.2.16 using APR version 1.6.3.
    21-Jun-2018 05:57:44.546 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
    21-Jun-2018 05:57:44.550 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized (OpenSSL 1.0.2o  27 Mar 2018)
    21-Jun-2018 05:57:44.811 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
    21-Jun-2018 05:57:44.840 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-apr-8009"]
    21-Jun-2018 05:57:44.845 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1208 ms
    

    相关文章

      网友评论

        本文标题:docker | tomcat- 8.0.52-jre8-alp

        本文链接:https://www.haomeiwen.com/subject/jjiqyftx.html