Docker 安裝 Tomcat

方法一、docker pull tomcat

查找Docker Hub上的tomcat鏡像

docker search tomcat

拉取官方的鏡像

'''[root@izbp1jdwfzdvn1cy1xbz tomcat]# docker pull tomcat'''

等待下載完成后窘哈,我們就可以在本地鏡像列表里查到REPOSITORY為tomcat的鏡像宏侍。

'''

[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# docker images|grep tomcat

docker.io/tomcat? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?8? ? ? ? ? ? ? ? ? ? ?dd6ff929584a? ? ? ? ? 2 months ago? ? ? ? 463 MB

docker.io/tomcat? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?latest? ? ? ? ? ? ? dd6ff929584a? ? ? ? ? ?2 months ago? ? ? ? 463 MB

docker.io/grange74/centos6-java6-tomcat6? ?latest? ? ? ? ? ? ? ?481203b6b87d? ? ? ? 4 years ago? ? ? ? ? ?347 MB

'''

方法二载慈、通過 Dockerfile 構(gòu)建

創(chuàng)建Dockerfile

首先,創(chuàng)建目錄tomcat,用于存放后面的相關(guān)東西。

'''[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]#? mkdir -p ~/tomcat/webapps ~/tomcat/logs ~/tomcat/conf'''

webapps目錄將映射為tomcat容器配置的應(yīng)用程序目錄

logs目錄將映射為tomcat容器的日志目錄

conf目錄里的配置文件將映射為tomcat容器的配置文件

進(jìn)入創(chuàng)建的tomcat目錄挟伙,創(chuàng)建Dockerfile

'''

FROM openjdk:8-jre

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 isolatedENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib

ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR# runtime dependencies for Tomcat Native Libraries# Tomcat Native 1.2+ requires a newer version of OpenSSL than debian:jessie has available# > checking OpenSSL library version >= 1.0.2...# > configure: error: Your version of OpenSSL is not compatible with this version of tcnative# see http://tomcat.10.x6.nabble.com/VOTE-Release-Apache-Tomcat-8-0-32-tp5046007p5046024.html (and following discussion)# and https://github.com/docker-library/tomcat/pull/31ENV OPENSSL_VERSION 1.1.0f-3+deb9u2

RUN set -ex; \

????currentVersion="$(dpkg-query --show --showformat '${Version}\n' openssl)"; \

????if dpkg --compare-versions "$currentVersion" '<<' "$OPENSSL_VERSION"; then \

????????if ! grep -q stretch /etc/apt/sources.list; then \# only add stretch if we're not already building from within stretch????????????{ \

????????????????echo 'deb http://deb.debian.org/debian stretch main'; \

????????????????echo 'deb http://security.debian.org stretch/updates main'; \

????????????????echo 'deb http://deb.debian.org/debian stretch-updates main'; \

????????????} > /etc/apt/sources.list.d/stretch.list; \

????????????{ \# add a negative "Pin-Priority" so that we never ever get packages from stretch unless we explicitly request them????????????????echo 'Package: *'; \

????????????????echo 'Pin: release n=stretch*'; \

????????????????echo 'Pin-Priority: -10'; \

????????????????echo; \# ... except OpenSSL, which is the reason we're here????????????????echo 'Package: openssl libssl*'; \

????????????????echo "Pin: version $OPENSSL_VERSION"; \

????????????????echo 'Pin-Priority: 990'; \

????????????} > /etc/apt/preferences.d/stretch-openssl; \

????????fi; \

????????apt-get update; \

????????apt-get install -y --no-install-recommends openssl="$OPENSSL_VERSION"; \

????????rm -rf /var/lib/apt/lists/*; \

????fi

RUN apt-get update && apt-get install -y --no-install-recommends \

????????libapr1 \

????&& rm -rf /var/lib/apt/lists/*

# 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.5.32

ENV TOMCAT_SHA512 fc010f4643cb9996cad3812594190564d0a30be717f659110211414faf8063c61fad1f18134154084ad3ddfbbbdb352fa6686a28fbb6402d3207d4e0a88fa9ce

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

????\

????savedAptMark="$(apt-mark showmanual)"; \

????apt-get update; \

????\

????apt-get install -y --no-install-recommends gnupg dirmngr; \

????\

????export GNUPGHOME="$(mktemp -d)"; \

????for key in $GPG_KEYS; do \

????????gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \

????done; \

????\

????apt-get install -y --no-install-recommends wget ca-certificates; \

????\

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

????apt-get install -y --no-install-recommends \

????????dpkg-dev \

????????gcc \

????????libapr1-dev \

????????libssl-dev \

????????make \

????????"openjdk-${JAVA_VERSION%%[.~bu-]*}-jdk=$JAVA_DEBIAN_VERSION" \

????; \

????( \

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

????\

# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies

????apt-mark auto '.*' > /dev/null; \

????[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \

????apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \

????rm -rf /var/lib/apt/lists/*; \

????\

# sh removes env vars it doesn't support (ones with periods)

# https://github.com/docker-library/tomcat/issues/77

????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"]

'''

通過Dockerfile創(chuàng)建一個鏡像,替換成你自己的名字

'''[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]#?docker build -t tomcat .'''

創(chuàng)建完成后模孩,我們可以在本地的鏡像列表里查找到剛剛創(chuàng)建的鏡像

'''[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# docker images|grep tomcat'''

使用tomcat鏡像

運行容器

'''[root@izbp1jdwfzdvn1q6ccy1xbz tomcat]# docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat??dd6ff929584a '''

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尖阔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子榨咐,更是在濱河造成了極大的恐慌介却,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件块茁,死亡現(xiàn)場離奇詭異筷笨,居然都是意外死亡,警方通過查閱死者的電腦和手機龟劲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門胃夏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昌跌,你說我怎么就攤上這事仰禀。” “怎么了蚕愤?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵答恶,是天一觀的道長。 經(jīng)常有香客問我萍诱,道長悬嗓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任裕坊,我火速辦了婚禮包竹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己周瞎,他們只是感情好苗缩,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著声诸,像睡著了一般酱讶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上彼乌,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天泻肯,我揣著相機與錄音,去河邊找鬼慰照。 笑死灶挟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的焚挠。 我是一名探鬼主播膏萧,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蝌衔!你這毒婦竟也來了榛泛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤噩斟,失蹤者是張志新(化名)和其女友劉穎曹锨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剃允,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡沛简,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斥废。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椒楣。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖牡肉,靈堂內(nèi)的尸體忽然破棺而出捧灰,到底是詐尸還是另有隱情,我是刑警寧澤统锤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布毛俏,位于F島的核電站,受9級特大地震影響饲窿,放射性物質(zhì)發(fā)生泄漏煌寇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一逾雄、第九天 我趴在偏房一處隱蔽的房頂上張望阀溶。 院中可真熱鬧腻脏,春花似錦、人聲如沸淌哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徒仓。三九已至,卻和暖如春誊垢,著一層夾襖步出監(jiān)牢的瞬間掉弛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工喂走, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留殃饿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓芋肠,卻偏偏與公主長得像乎芳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帖池,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容