亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

基于alpine用dockerfile創建的tomcat鏡像的實現

2024-09-01 13:56:12
字體:
來源:轉載
供稿:網友

1、下載alpine鏡像

[root@docker43 ~]# docker pull alpineUsing default tag: latestTrying to pull repository docker.io/library/alpine ...latest: Pulling from docker.io/library/alpine4fe2ade4980c: Pull completeDigest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528Status: Downloaded newer image for docker.io/alpine:latest[root@docker43 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/alpine latest 196d12cf6ab1 3 weeks ago 4.41 MB 

2、通過dockerfile構建鏡像

在其他的資料中很多都是下載包然后在dockerfile 使用COPY進行拷貝,這里我就不這樣做了,我們分開寫(都是通過dockerfile進行構建鏡像)

2.1.構建jdk鏡像

創建jdk目錄

[root@docker43 ~]# cd /opt/[root@docker43 opt]# mkdir -p alpine_jre && cd alpine_jre && touch Dockerfile[root@docker43 alpine_jre]# ll總用量 0-rw-r--r-- 1 root root 0 10月 6 17:39 Dockerfile 

編寫dockerfile文件

# 基礎鏡像FROM alpine # 作者信息MAINTAINER JRE Docker Maintainers "1024331014@qq.com" # 修改源RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && /  echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories # 安裝需要的軟件RUN apk update && /  apk add --no-cache ca-certificates && /  apk add --no-cache curl bash tree tzdata && /  cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 定義環境變量ENV PATH /usr/local/bin:${PATH} # 安裝JRERUN apk add --nocache openjdk8-jre-base && /  rm -rf /var/cache/apk/* RUN { /    echo '#!/bin/sh'; /    echo 'set -e'; /    echo; /    echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; /   } > /usr/local/bin/docker-java-home /  && chmod +x /usr/local/bin/docker-java-home ENV JAVA_HOME /usr/lib/jvm/default-jvmENV PATH ${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/binENV JAVA_VERSION 8u71ENV JAVA_ALPINE_VERSION 8.171.11-r0RUN set -x /  /  && apk add --no-cache /  /  openjdk8-jre="$JAVA_ALPINE_VERSION" 

創建鏡像

[root@docker43 alpine_jre]# docker build -t alpine_jre . 

查看鏡像

[root@docker43 alpine_jre]# docker imagesREPOSITORY     TAG         IMAGE ID      CREATED       SIZEalpine_jre     latest       614bc57ab66e    33 seconds ago   91.1 MBdocker.io/alpine  latest       196d12cf6ab1    3 weeks ago     4.41 MB 

2.2.構建tomcat鏡像

創建tomcat目錄

[root@docker43 ~]# cd /opt/[root@docker43 opt]# mkdir -p jre_tomcat && cd jre_tomcat && touch Dockerfile[root@docker43 jre_tomcat]# ll總用量 0-rw-r--r-- 1 root root 0 10月 6 17:46 Dockerfile 

編寫dockerfile(基于上面的alpine_jre鏡像)

#基礎鏡像FROM alpine_jre # 作者信息MAINTAINER tomcat Docker Maintainers "1024331014@qq.com" # 定義tomcat變量(如果有其他的可以在這里加)ENV CATALINA_HOME /usr/local/tomcatENV PATH $CATALINA_HOME/bin:$PATHRUN mkdir -p "$CATALINA_HOME"WORKDIR $CATALINA_HOME # let "Tomcat Native" live somewhere isolatedENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-libENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR RUN apk add --no-cache gnupg # see http://archive.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 F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23RUN set -ex; /    for key in $GPG_KEYS; do /        gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; /    done # 定義tomcat版本ENV TOMCAT_MAJOR 8ENV TOMCAT_VERSION 8.0.53 # 下載# https://issues.apache.org/jira/browse/INFRA-8753?focusedCommentId=14735394#comment-14735394ENV TOMCAT_TGZ_URL https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz# not all the mirrors actually carry the .asc files :'(ENV TOMCAT_ASC_URL http://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc # 安裝RUN set -x /    /    && apk add --no-cache --virtual .fetch-deps /        ca-certificates /        tar /        openssl /    && wget -O tomcat.tar.gz "$TOMCAT_TGZ_URL" /    && wget -O tomcat.tar.gz.asc "$TOMCAT_ASC_URL" /    && 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* /    /    && 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 /        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$(getconf _NPROCESSORS_ONLN) /        && make install /    ) /    && runDeps="$( /        scanelf --needed --nobanner --recursive "$TOMCAT_NATIVE_LIBDIR" /            | awk '{ gsub(/,/, "/nso:", $2); print "so:" $2 }' /            | sort -u /            | xargs -r apk info --installed /            | sort -u /    )" /    && apk add --virtual .tomcat-native-rundeps $runDeps /    && apk del .fetch-deps .native-build-deps /    && rm -rf "$nativeBuildDir" /    && rm bin/tomcat-native.tar.gz # verify Tomcat Native is working properlyRUN 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 # 開發8080端口EXPOSE 8080# 執行命令CMD ["catalina.sh", "run"] 

創建鏡像

[root@docker43 jre_tomcat]# docker build -t tomcat:1.0 . 

查看鏡像

[root@docker43 jre_tomcat]# docker imagesREPOSITORY     TAG         IMAGE ID      CREATED       SIZEtomcat       1.0         64c9cec4375d    7 seconds ago    124 MBalpine_jre     latest       614bc57ab66e    8 minutes ago    91.1 MBdocker.io/alpine  latest       196d12cf6ab1    3 weeks ago     4.41 MB 

2.3.構建tomcat_web鏡像

創建tomcat_web目錄(包含Dockerfile和啟動文件)

[root@docker43 ~]# cd /opt/[root@docker43 opt]# mkdir tomcat_web && cd tomcat_web && touch Dockerfile && touch start.sh[root@docker43 tomcat_web]# ll總用量 0-rw-r--r-- 1 root root 0 10月 6 17:53 Dockerfile-rw-r--r-- 1 root root 0 10月 6 17:53 start.sh 

編寫start.sh啟動腳本

#!/bin/sh# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version 2.0# (the "License"); you may not use this file except in compliance with# the License. You may obtain a copy of the License at##   http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License. # -----------------------------------------------------------------------------# Control Script for the CATALINA Server## Environment Variable Prerequisites##  Do not set the variables in this script. Instead put them into a script#  setenv.sh in CATALINA_BASE/bin to keep your customizations separate.##  CATALINA_HOME  May point at your Catalina "build" directory.##  CATALINA_BASE  (Optional) Base directory for resolving dynamic portions#          of a Catalina installation. If not present, resolves to#          the same directory that CATALINA_HOME points to.##  CATALINA_OUT  (Optional) Full path to a file where stdout and stderr#          will be redirected.#          Default is $CATALINA_BASE/logs/catalina.out##  CATALINA_OPTS  (Optional) Java runtime options used when the "start",#          "run" or "debug" command is executed.#          Include here and not in JAVA_OPTS all options, that should#          only be used by Tomcat itself, not by the stop process,#          the version command etc.#          Examples are heap size, GC logging, JMX ports etc.##  CATALINA_TMPDIR (Optional) Directory path location of temporary directory#          the JVM should use (java.io.tmpdir). Defaults to#          $CATALINA_BASE/temp.##  JAVA_HOME    Must point at your Java Development Kit installation.#          Required to run the with the "debug" argument.##  JRE_HOME    Must point at your Java Runtime installation.#          Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME#          are both set, JRE_HOME is used.##  JAVA_OPTS    (Optional) Java runtime options used when any command#          is executed.#          Include here and not in CATALINA_OPTS all options, that#          should be used by Tomcat and also by the stop process,#          the version command etc.#          Most options should go into CATALINA_OPTS.##  JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories#          containing some jars in order to allow replacement of APIs#          created outside of the JCP (i.e. DOM and SAX from W3C).#          It can also be used to update the XML parser implementation.#          Defaults to $CATALINA_HOME/endorsed.##  JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start"#          command is executed. The default is "dt_socket".##  JPDA_ADDRESS  (Optional) Java runtime options used when the "jpda start"#          command is executed. The default is localhost:8000.##  JPDA_SUSPEND  (Optional) Java runtime options used when the "jpda start"#          command is executed. Specifies whether JVM should suspend#          execution immediately after startup. Default is "n".##  JPDA_OPTS    (Optional) Java runtime options used when the "jpda start"#          command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,#          and JPDA_SUSPEND are ignored. Thus, all required jpda#          options MUST be specified. The default is:##          -agentlib:jdwp=transport=$JPDA_TRANSPORT,#            address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND##  JSSE_OPTS    (Optional) Java runtime options used to control the TLS#          implementation when JSSE is used. Default is:#          "-Djdk.tls.ephemeralDHKeySize=2048"##  CATALINA_PID  (Optional) Path of the file which should contains the pid#          of the catalina startup java process, when start (fork) is#          used##  LOGGING_CONFIG (Optional) Override Tomcat's logging config file#          Example (all one line)#          LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"##  LOGGING_MANAGER (Optional) Override Tomcat's logging manager#          Example (all one line)#          LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"##  USE_NOHUP    (Optional) If set to the string true the start command will#          use nohup so that the Tomcat process will ignore any hangup#          signals. Default is "false" unless running on HP-UX in which#          case the default is "true"# ----------------------------------------------------------------------------- # OS specific support. $var _must_ be set to either true or false.cygwin=falsedarwin=falseos400=falsehpux=falsecase "`uname`" inCYGWIN*) cygwin=true;;Darwin*) darwin=true;;OS400*) os400=true;;HP-UX*) hpux=true;;esac # resolve links - $0 may be a softlinkPRG="$0" while [ -h "$PRG" ]; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> /(.*/)$'` if expr "$link" : '/.*' > /dev/null; then  PRG="$link" else  PRG=`dirname "$PRG"`/"$link" fidone # Get standard environment variablesPRGDIR=`dirname "$PRG"` # Only set CATALINA_HOME if not already set[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd` # Copy CATALINA_BASE from CATALINA_HOME if not already set[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME" # Ensure that any user defined CLASSPATH variables are not used on startup,# but allow them to be specified in setenv.sh, in rare case when it is needed.CLASSPATH= if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then . "$CATALINA_BASE/bin/setenv.sh"elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then . "$CATALINA_HOME/bin/setenv.sh"fi # For Cygwin, ensure paths are in UNIX format before anything is touchedif $cygwin; then [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"` [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"` [ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"` [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`fi # Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a colon# as this is used as the separator in the classpath and Java provides no# mechanism for escaping if the same character appears in the path.case $CATALINA_HOME in *:*) echo "Using CATALINA_HOME:  $CATALINA_HOME";    echo "Unable to start as CATALINA_HOME contains a colon (:) character";    exit 1;esaccase $CATALINA_BASE in *:*) echo "Using CATALINA_BASE:  $CATALINA_BASE";    echo "Unable to start as CATALINA_BASE contains a colon (:) character";    exit 1;esac # For OS400if $os400; then # Set job priority to standard for interactive (interactive - 6) by using # the interactive priority - 6, the helper threads that respond to requests # will be running at the same priority as interactive jobs. COMMAND='chgjob job('$JOBNAME') runpty(6)' system $COMMAND  # Enable multi threading export QIBM_MULTI_THREADED=Yfi # Get standard Java environment variablesif $os400; then # -r will Only work on the os400 if the files are: # 1. owned by the user # 2. owned by the PRIMARY group of the user # this will not work if the user belongs in secondary groups . "$CATALINA_HOME"/bin/setclasspath.shelse if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then  . "$CATALINA_HOME"/bin/setclasspath.sh else  echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"  echo "This file is needed to run this program"  exit 1 fifi # Add on extra jar files to CLASSPATHif [ ! -z "$CLASSPATH" ] ; then CLASSPATH="$CLASSPATH":fiCLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.outfi if [ -z "$CATALINA_TMPDIR" ] ; then # Define the java.io.tmpdir to use for Catalina CATALINA_TMPDIR="$CATALINA_BASE"/tempfi # Add tomcat-juli.jar to classpath# tomcat-juli.jar can be over-ridden per instanceif [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jarelse CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jarfi # Bugzilla 37848: When no TTY is available, don't output to consolehave_tty=0if [ "`tty`" != "not a tty" ]; then  have_tty=1fi # For Cygwin, switch paths to Windows format before running javaif $cygwin; then JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"` JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"` CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"` CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"` CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"` CLASSPATH=`cygpath --path --windows "$CLASSPATH"` JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`fi if [ -z "$JSSE_OPTS" ] ; then JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"fiJAVA_OPTS="$JAVA_OPTS $JSSE_OPTS" # Register custom URL handlers# Do this here so custom URL handles (specifically 'war:...') can be used in the security policyJAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources" # Set juli LogManager config file if it is present and an override has not been issuedif [ -z "$LOGGING_CONFIG" ]; then if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then  LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties" else  # Bugzilla 45585  LOGGING_CONFIG="-Dnop" fifi if [ -z "$LOGGING_MANAGER" ]; then LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"fi # Uncomment the following line to make the umask available when using the# org.apache.catalina.security.SecurityListener#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`" if [ -z "$USE_NOHUP" ]; then  if $hpux; then    USE_NOHUP="true"  else    USE_NOHUP="false"  fifiunset _NOHUPif [ "$USE_NOHUP" = "true" ]; then  _NOHUP=nohupfi # ----- Execute The Requested Command ----------------------------------------- # Bugzilla 37848: only output this if we have a TTYif [ $have_tty -eq 1 ]; then echo "Using CATALINA_BASE:  $CATALINA_BASE" echo "Using CATALINA_HOME:  $CATALINA_HOME" echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR" if [ "$1" = "debug" ] ; then  echo "Using JAVA_HOME:    $JAVA_HOME" else  echo "Using JRE_HOME:    $JRE_HOME" fi echo "Using CLASSPATH:    $CLASSPATH" if [ ! -z "$CATALINA_PID" ]; then  echo "Using CATALINA_PID:  $CATALINA_PID" fifi if [ "$1" = "jpda" ] ; then if [ -z "$JPDA_TRANSPORT" ]; then  JPDA_TRANSPORT="dt_socket" fi if [ -z "$JPDA_ADDRESS" ]; then  JPDA_ADDRESS="localhost:8000" fi if [ -z "$JPDA_SUSPEND" ]; then  JPDA_SUSPEND="n" fi if [ -z "$JPDA_OPTS" ]; then  JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND" fi CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS" shiftfi if [ "$1" = "debug" ] ; then if $os400; then  echo "Debug command not available on OS400"  exit 1 else  shift  if [ "$1" = "-security" ] ; then   if [ $have_tty -eq 1 ]; then    echo "Using Security Manager"   fi   shift   exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS /    -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" /    -sourcepath "$CATALINA_HOME"/../../java /    -Djava.security.manager /    -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy /    -Dcatalina.base="$CATALINA_BASE" /    -Dcatalina.home="$CATALINA_HOME" /    -Djava.io.tmpdir="$CATALINA_TMPDIR" /    org.apache.catalina.startup.Bootstrap "$@" start  else   exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS /    -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" /    -sourcepath "$CATALINA_HOME"/../../java /    -Dcatalina.base="$CATALINA_BASE" /    -Dcatalina.home="$CATALINA_HOME" /    -Djava.io.tmpdir="$CATALINA_TMPDIR" /    org.apache.catalina.startup.Bootstrap "$@" start  fi fi elif [ "$1" = "run" ]; then  shift if [ "$1" = "-security" ] ; then  if [ $have_tty -eq 1 ]; then   echo "Using Security Manager"  fi  shift  eval exec "/"$_RUNJAVA/"" "/"$LOGGING_CONFIG/"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS /   -Djava.endorsed.dirs="/"$JAVA_ENDORSED_DIRS/"" -classpath "/"$CLASSPATH/"" /   -Djava.security.manager /   -Djava.security.policy=="/"$CATALINA_BASE/conf/catalina.policy/"" /   -Dcatalina.base="/"$CATALINA_BASE/"" /   -Dcatalina.home="/"$CATALINA_HOME/"" /   -Djava.io.tmpdir="/"$CATALINA_TMPDIR/"" /   org.apache.catalina.startup.Bootstrap "$@" start else  eval exec "/"$_RUNJAVA/"" "/"$LOGGING_CONFIG/"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS /   -Djava.endorsed.dirs="/"$JAVA_ENDORSED_DIRS/"" -classpath "/"$CLASSPATH/"" /   -Dcatalina.base="/"$CATALINA_BASE/"" /   -Dcatalina.home="/"$CATALINA_HOME/"" /   -Djava.io.tmpdir="/"$CATALINA_TMPDIR/"" /   org.apache.catalina.startup.Bootstrap "$@" start /   >> "$CATALINA_OUT" 2>&1  fifi 

編寫dockerfile(基于上面的tomcat鏡像)

# 基礎鏡像FROM tomcat:1.0 # 創建項目目錄和日志目錄,這個是要在宿主機-v掛載的RUN set -x /  &&mkdir -p /Webs/logs /  /  &&rm -rf /usr/local/tomcat/logs /  /  &&ln -sf /Webs/logs /usr/local/tomcat/logs # 將啟動文件copy到容器COPY start.sh /usr/local/tomcat/bin/ # 給容器的啟動腳本權限RUN chmod +x /usr/local/tomcat/bin/start.sh # 開放8080端口EXPOSE 8080 # 運行tomcatCMD ["start.sh","run"] 

創建鏡像

[root@docker43 tomcat_web]# docker build -t tomcat_web:v1 . 

查看鏡像

[root@docker43 tomcat_web]# docker imagesREPOSITORY     TAG         IMAGE ID      CREATED       SIZEtomcat_web     v1         b3651c50a7b5    26 seconds ago   124 MBtomcat       1.0         64c9cec4375d    6 minutes ago    124 MBalpine_jre     latest       614bc57ab66e    14 minutes ago   91.1 MBdocker.io/alpine  latest       196d12cf6ab1    3 weeks ago     4.41 MB 

3、創建容器

創建項目目錄

我們是基于tomcat_web鏡像進行創建容器的

首先我先在宿主機上創建個項目的目錄(server.xml的配置文件拷貝改路徑就能用)

[root@docker43 ~]# cd /home/[root@docker43 home]# mkdir test.tomcat.com && cd test.tomcat.com[root@docker43 test.tomcat.com]# touch server.xml # 配置文件[root@docker43 test.tomcat.com]# mkdir logs    # 日志目錄[root@docker43 test.tomcat.com]# mkdir wwwroot   # 項目主目錄(要是修改了記得也在server.xml進行修改)[root@docker43 test.tomcat.com]# ll總用量 0drwxr-xr-x 2 root root 6 10月 6 18:03 logs-rw-r--r-- 1 root root 0 10月 6 18:02 server.xmldrwxr-xr-x 2 root root 6 10月 6 18:03 wwwroot 

server.xml配置文件

  <?xml version='1.0' encoding='utf-8'?>  <Server port="8005" shutdown="SHUTDOWN">  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />   <GlobalNamingResources>    <Resource name="UserDatabase" auth="Container"        type="org.apache.catalina.UserDatabase"        description="User database that can be updated and saved"        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"        pathname="conf/tomcat-users.xml" />  </GlobalNamingResources>   <Service name="Catalina">   <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"        connectionTimeout="20000"        maxThreads="1000"         minSpareThreads="100"         redirectPort="8443" URIEncoding="UTF-8"/>   <Connector port="8009" maxThreads="1000" minSpareThreads="100" protocol="AJP/1.3" redirectPort="8443" />   <Engine name="Catalina" defaultHost="localhost">    <Realm className="org.apache.catalina.realm.LockOutRealm">    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>    </Realm>     <Host name="localhost" appBase="/Webs/wwwroot" unpackWARs="true" autoDeploy="true">     <Context path="" docBase="/Webs/wwwroot" reloadable="true" />     <Valve className="org.apache.catalina.valves.AccessLogValve"      directory="logs"      prefix="localhost__access_log"      suffix=".txt"      pattern="%{X-Real-IP}i %l %u %t "%r" %s %b" />     </Host>    </Engine>  </Service> </Server>

編寫測試頁面

在wwwroot中編寫個測試頁面

[root@docker43 test.tomcat.com]# cd wwwroot/[root@docker43 wwwroot]# cat index.html 

成功了 

創建并啟動容器

復制代碼代碼如下:
docker run -tid  --restart=always --name test.tomcat.com  -p 5081:8080 -v /home/test.tomcat.com/:/Webs -m 2048m  --memory-swap=2048m  --cpu-shares=256  tomcat_web:v1 start.sh  run -config /Webs/server.xml

 

查看容器

[root@docker43 test.tomcat.com]# docker psCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMESab62045e0688    tomcat_web:v1    "start.sh run -con..."  2 seconds ago    Up 1 second     0.0.0.0:5081->8080/tcp  test.tomcat.com 

測試

[root@docker43 test.tomcat.com]# curl 127.0.0.1:5081成功了[root@docker43 test.tomcat.com]# 

4、溫馨提示

1、各位肯定會問我問什么要做這么多的鏡像,我的回答是每個都獨立出來 放在之后的私有倉庫中,以后可以單獨的使用

2、這篇文章的代碼都完全的可以直接的復制粘貼使用,要注意的是根據自己的情況來修改Dockerfile的變量版本,還有就是項目的路徑和創建容器的參數

3、我們在創建第二個項目的使用,完全可以重復的執行創建容器的步驟只是修改下項目目錄的名字和容器的名字而已

4、也可以把上面的三個dockerfile文件合并創建鏡像,但是不建議這樣做

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品久久精品| 夜夜嗨av一区二区三区四区| 日韩网站免费观看高清| 亚洲欧洲黄色网| 国产综合在线观看视频| 欧美激情精品久久久久久久变态| 国产精品欧美一区二区| 久久久噜久噜久久综合| 久久青草福利网站| 亚洲福利视频二区| 久久九九全国免费精品观看| 5566成人精品视频免费| 国产成人福利视频| 一本久久综合亚洲鲁鲁| 久久99久国产精品黄毛片入口| 2019中文字幕全在线观看| 日本精品久久中文字幕佐佐木| 日韩中文字幕网址| 韩国精品久久久999| 欧美区在线播放| 中文精品99久久国产香蕉| 最好看的2019的中文字幕视频| 国产精国产精品| 国产啪精品视频网站| 日韩av在线最新| 国产91精品久久久| 精品视频久久久久久| 亚洲热线99精品视频| 国产精品久久久久高潮| 欧美日韩中文字幕| 亚洲免费高清视频| 日韩视频一区在线| 超碰97人人做人人爱少妇| 欧美丝袜一区二区三区| 国产精品美女999| 国产精品久久久久高潮| 久久国产精品影片| 精品一区二区三区三区| 尤物九九久久国产精品的特点| 欧美激情视频免费观看| 在线亚洲国产精品网| 久久久久久成人精品| 狠狠爱在线视频一区| 亚洲综合中文字幕68页| 午夜精品蜜臀一区二区三区免费| 国产精品99导航| 亚洲国产精品成人精品| 日韩av在线精品| 日韩天堂在线视频| 亚洲欧洲偷拍精品| 久久精品国产69国产精品亚洲| 啊v视频在线一区二区三区| 色综久久综合桃花网| 欧美亚洲成人精品| 欧美日韩在线第一页| 日本aⅴ大伊香蕉精品视频| 久久精视频免费在线久久完整在线看| 全亚洲最色的网站在线观看| 欧洲成人免费aa| 亚洲国产又黄又爽女人高潮的| 亚洲美女又黄又爽在线观看| 91精品国产电影| 久久久久在线观看| 国产精品高潮粉嫩av| 亚洲一区二区免费在线| 亚洲视频精品在线| 国产精品视频999| 国产精品视频大全| 日韩中文字幕在线免费观看| 久久久久久国产三级电影| 国产第一区电影| 成人自拍性视频| 成人有码视频在线播放| 色偷偷9999www| 精品亚洲一区二区三区在线观看| 成人精品福利视频| 中文字幕av一区二区三区谷原希美| 日韩av电影手机在线观看| 日韩一区二区av| 北条麻妃一区二区在线观看| 国产色综合天天综合网| 91av视频在线观看| 色综合91久久精品中文字幕| 成人福利在线观看| 一区二区三区高清国产| 久久天天躁狠狠躁夜夜躁2014| 国产精品揄拍一区二区| 91免费观看网站| 欧美在线不卡区| 777午夜精品福利在线观看| 97在线视频免费观看| 日韩国产欧美精品在线| 欧美一区二区三区免费观看| 92看片淫黄大片欧美看国产片| 国产精品久久久久免费a∨| 亚州av一区二区| 97婷婷涩涩精品一区| 亚洲视屏在线播放| 亚洲精品美女在线观看| 亚洲欧美日韩中文视频| 久久久久成人精品| 亚洲高清一二三区| 国产精品视频区| 456国产精品| 欧美—级a级欧美特级ar全黄| 日韩av三级在线观看| 91免费的视频在线播放| 日韩av电影在线网| 亚洲黄色成人网| 国产精品免费一区二区三区都可以| 国产玖玖精品视频| 欧美特黄级在线| 欧美日韩在线视频一区二区| 国产成人精品视频在线| 久久久久久久国产精品| 中日韩午夜理伦电影免费| 欧洲成人在线视频| 久久久中精品2020中文| 国产99久久精品一区二区 夜夜躁日日躁| 精品久久久久久| 欧美裸体视频网站| 亚洲欧美在线看| 欧美性生交大片免费| 国产精品视频免费观看www| 91日本视频在线| 日韩精品免费电影| 亚洲欧洲一区二区三区在线观看| 久久国产精品网站| 狠狠色狠色综合曰曰| 亚洲四色影视在线观看| 日韩美女视频中文字幕| 日韩av手机在线观看| 2023亚洲男人天堂| 国语自产精品视频在免费| 亚洲自拍偷拍视频| 国产精品夜色7777狼人| 91精品久久久久久久久不口人| 亚洲激情小视频| 欧美性做爰毛片| 午夜精品一区二区三区av| 欧美福利在线观看| 欧美肥婆姓交大片| 深夜精品寂寞黄网站在线观看| 亚洲最大的av网站| 川上优av一区二区线观看| 久久久免费在线观看| 丝袜亚洲欧美日韩综合| 亚洲二区中文字幕| 欧美日韩综合视频| 久久久这里只有精品视频| 中文字幕在线日韩| 日韩精品免费在线观看| 欧美大片网站在线观看| 成人www视频在线观看| 成人激情av在线| 久久精品91久久久久久再现| 2023亚洲男人天堂| 欧美在线激情网| 日韩欧美在线网址| 51ⅴ精品国产91久久久久久| 亚洲视频在线免费看| 欧美中文在线观看| 欧美国产精品人人做人人爱| 国产欧美在线看|