English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
검색 Docker Hub 에 있는 Tomcat 이미지:
Sort by를 통해 다른 버전의 tomcat을 확인할 수 있습니다. 기본적으로는 최신 버전입니다 tomcat:latest。
또한, docker search tomcat 명령어를 사용하여 사용 가능한 버전을 확인할 수 있습니다:
w3codebox@w3codebox:~/tomcat$ docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomcat은 오픈 소스 구현입니다... 744 [OK] dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 과 Tomcat 8 ba... 19 [OK] consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 16 [OK] consol/tomcat-8.0 Tomcat 8.0.15, 8080, "admin/admin" 14 [OK] cloudesire/tomcat Tomcat 서버, 6/7/8 8 [OK] davidcaste/alpine-tomcat Apache Tomcat 7/8 Oracle Java 사용 7/8 wi... 6 [OK] andreptb/tomcat Debian Jessie 기반 이미지, Apache Tomcat 포함 4 [OK] kieker/tomcat 2 [OK] fbrx/tomcat Alpine Linux 기반 최소 Tomcat 이미지 2 [OK] jtech/tomcat 최신 Tomcat 생산 배포판 1 [OK]
여기서는 공식镜像를 다운로드합니다:
w3codebox@w3codebox:~/tomcat$ docker pull tomcat
다운로드가 완료되면, 로컬 이미지 목록에서 REPOSITORY가 tomcat인 이미지를 찾을 수 있습니다.
w3codebox@w3codebox:~/tomcat$ docker images|grep tomcat tomcat 최신 70f819d3d2d9 7 ago 335.8 MB
Dockerfile 생성
먼저, tomcat 디렉토리를 생성하여 나중에 필요한 것들을 저장합니다.
w3codebox@w3codebox:~$ mkdir -p ~/tomcat/webapps ~/tomcat/logs ~/tomcat/conf
webapps 디렉토리는 tomcat 컨테이너 설정의 애플리케이션 디렉토리로 맵핑됩니다.
logs 디렉토리는 tomcat 컨테이너의 로그 디렉토리로 맵핑됩니다.
conf 디렉토리에 있는 설정 파일은 tomcat 컨테이너의 설정 파일로 맵핑됩니다.
입력된 tomcat 디렉토리에 접속하여 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 isolated ENV 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/31 ENV 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 토모케이트_메이저 8 ENV 토모케이트_버전 8.5.32 ENV 토모케이트_샤512 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; \\ echo >&2 "$nativeLines"; \\ exit 1; \\ fi EXPOSE 8080 CMD ["catalina.sh", "run"]
Dockerfile을 통해 이미지를 생성하고, 자신의 이름으로 대체하세요:
w3codebox@w3codebox:~/tomcat$ docker build -t tomcat .
생성이 완료되면, 우리는 로컬 이미지 목록에서 새로운 이미지를 찾을 수 있습니다:
w3codebox@w3codebox:~/tomcat$ docker images|grep tomcat tomcat 최신 70f819d3d2d9 7 ago 335.8 MB
w3codebox@w3codebox:~/tomcat$ docker run --이름 tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat acb33fcb4beb8d7f1ebace6f50f5fc204b1dbe9d524881267aa715c61cf75320 w3codebox@w3codebox:~/tomcat$
명령 설명:
-p 8080:8080:호스트의 8080 포트가 컨테이너에 매핑됨 8080 포트。
-v $PWD/test:/usr/local/tomcat/webapps/test:호스트의 현재 디렉토리의 test를 컨테이너에 마운트 /test。
컨테이너 시작 상태 확인
w3codebox@w3codebox:~/tomcat$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS ... NAMES acb33fcb4beb tomcat "catalina.sh run" ... 0.0.0.0:8080->8080/tcp tomcat
브라우저를 통해 접속