{"id":59,"date":"2019-02-10T17:19:22","date_gmt":"2019-02-10T09:19:22","guid":{"rendered":"http:\/\/b.yesiyu.top\/?p=59"},"modified":"2019-02-10T17:19:22","modified_gmt":"2019-02-10T09:19:22","slug":"docker-%e5%ae%89%e8%a3%85-tomcat","status":"publish","type":"post","link":"https:\/\/b.yesiyu.top\/?p=59","title":{"rendered":"Docker \u5b89\u88c5 Tomcat"},"content":{"rendered":"<h3>\u65b9\u6cd5\u4e00\u3001docker pull tomcat<\/h3>\n<p>\u67e5\u627eDocker Hub\u4e0a\u7684tomcat\u955c\u50cf<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$ docker search tomcat\r\nNAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED\r\ntomcat                     <\/span><span class=\"typ\">Apache<\/span> <span class=\"typ\">Tomcat<\/span> <span class=\"kwd\">is<\/span><span class=\"pln\"> an open source implementa<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">744<\/span>       <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">       \r\ndordoka<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat             <\/span><span class=\"typ\">Ubuntu<\/span> <span class=\"lit\">14.04<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">Oracle<\/span><span class=\"pln\"> JDK <\/span><span class=\"lit\">8<\/span> <span class=\"kwd\">and<\/span> <span class=\"typ\">Tomcat<\/span> <span class=\"lit\">8<\/span><span class=\"pln\"> ba<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">19<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nconsol<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat<\/span><span class=\"pun\">-<\/span><span class=\"lit\">7.0<\/span>          <span class=\"typ\">Tomcat<\/span> <span class=\"lit\">7.0<\/span><span class=\"pun\">.<\/span><span class=\"lit\">57<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">8080<\/span><span class=\"pun\">,<\/span> <span class=\"str\">\"admin\/admin\"<\/span>              <span class=\"lit\">16<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nconsol<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat<\/span><span class=\"pun\">-<\/span><span class=\"lit\">8.0<\/span>          <span class=\"typ\">Tomcat<\/span> <span class=\"lit\">8.0<\/span><span class=\"pun\">.<\/span><span class=\"lit\">15<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">8080<\/span><span class=\"pun\">,<\/span> <span class=\"str\">\"admin\/admin\"<\/span>              <span class=\"lit\">14<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\ncloudesire<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat          <\/span><span class=\"typ\">Tomcat<\/span><span class=\"pln\"> server<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">6<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">7<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">8<\/span>                            <span class=\"lit\">8<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\ndavidcaste<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">alpine<\/span><span class=\"pun\">-<\/span><span class=\"pln\">tomcat   <\/span><span class=\"typ\">Apache<\/span> <span class=\"typ\">Tomcat<\/span> <span class=\"lit\">7<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">8<\/span> <span class=\"kwd\">using<\/span> <span class=\"typ\">Oracle<\/span> <span class=\"typ\">Java<\/span> <span class=\"lit\">7<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">8<\/span><span class=\"pln\"> wi<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">6<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nandreptb<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat            <\/span><span class=\"typ\">Debian<\/span> <span class=\"typ\">Jessie<\/span><span class=\"pln\"> based image <\/span><span class=\"kwd\">with<\/span> <span class=\"typ\">Apache<\/span> <span class=\"typ\">Tomc<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">4<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nkieker<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat                                                              <\/span><span class=\"lit\">2<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nfbrx<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat                <\/span><span class=\"typ\">Minimal<\/span> <span class=\"typ\">Tomcat<\/span><span class=\"pln\"> image based on <\/span><span class=\"typ\">Alpine<\/span> <span class=\"typ\">Linux<\/span>      <span class=\"lit\">2<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\njtech<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat               <\/span><span class=\"typ\">Latest<\/span> <span class=\"typ\">Tomcat<\/span><span class=\"pln\"> production distribution on l<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">1<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><\/pre>\n<p>\u8fd9\u91cc\u6211\u4eec\u62c9\u53d6\u5b98\u65b9\u7684\u955c\u50cf<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$ docker pull tomcat<\/span><\/pre>\n<p>\u7b49\u5f85\u4e0b\u8f7d\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5728\u672c\u5730\u955c\u50cf\u5217\u8868\u91cc\u67e5\u5230REPOSITORY\u4e3atomcat\u7684\u955c\u50cf\u3002<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$ docker images<\/span><span class=\"pun\">|<\/span><span class=\"pln\">grep tomcat\r\ntomcat              latest              <\/span><span class=\"lit\">70f819d3d2d9<\/span>        <span class=\"lit\">7<\/span><span class=\"pln\"> days ago          <\/span><span class=\"lit\">335.8<\/span><span class=\"pln\"> MB<\/span><\/pre>\n<h3>\u65b9\u6cd5\u4e8c\u3001\u901a\u8fc7 Dockerfile \u6784\u5efa<\/h3>\n<p>\u521b\u5efaDockerfile<\/p>\n<p>\u9996\u5148\uff0c\u521b\u5efa\u76ee\u5f55tomcat,\u7528\u4e8e\u5b58\u653e\u540e\u9762\u7684\u76f8\u5173\u4e1c\u897f\u3002<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~<\/span><span class=\"pln\">$ mkdir <\/span><span class=\"pun\">-<\/span><span class=\"pln\">p <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/tomcat\/<\/span><span class=\"pln\">webapps <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/tomcat\/<\/span><span class=\"pln\">logs <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/tomcat\/<\/span><span class=\"pln\">conf<\/span><\/pre>\n<p>webapps\u76ee\u5f55\u5c06\u6620\u5c04\u4e3atomcat\u5bb9\u5668\u914d\u7f6e\u7684\u5e94\u7528\u7a0b\u5e8f\u76ee\u5f55<\/p>\n<p>logs\u76ee\u5f55\u5c06\u6620\u5c04\u4e3atomcat\u5bb9\u5668\u7684\u65e5\u5fd7\u76ee\u5f55<\/p>\n<p>conf\u76ee\u5f55\u91cc\u7684\u914d\u7f6e\u6587\u4ef6\u5c06\u6620\u5c04\u4e3atomcat\u5bb9\u5668\u7684\u914d\u7f6e\u6587\u4ef6<\/p>\n<p>\u8fdb\u5165\u521b\u5efa\u7684tomcat\u76ee\u5f55\uff0c\u521b\u5efaDockerfile<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">FROM openjdk<\/span><span class=\"pun\">:<\/span><span class=\"lit\">8<\/span><span class=\"pun\">-<\/span><span class=\"pln\">jre\r\n\r\nENV CATALINA_HOME <\/span><span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><span class=\"pun\">\/<\/span><span class=\"kwd\">local<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat\r\nENV PATH $CATALINA_HOME<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">bin<\/span><span class=\"pun\">:<\/span><span class=\"pln\">$PATH\r\nRUN mkdir <\/span><span class=\"pun\">-<\/span><span class=\"pln\">p <\/span><span class=\"str\">\"$CATALINA_HOME\"<\/span><span class=\"pln\">\r\nWORKDIR $CATALINA_HOME\r\n\r\n<\/span><span class=\"com\"># let \"Tomcat Native\" live somewhere isolated<\/span><span class=\"pln\">\r\nENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME<\/span><span class=\"pun\">\/<\/span><span class=\"kwd\">native<\/span><span class=\"pun\">-<\/span><span class=\"pln\">jni<\/span><span class=\"pun\">-<\/span><span class=\"pln\">lib\r\nENV LD_LIBRARY_PATH $<\/span><span class=\"pun\">{<\/span><span class=\"pln\">LD_LIBRARY_PATH<\/span><span class=\"pun\">:+<\/span><span class=\"pln\">$LD_LIBRARY_PATH<\/span><span class=\"pun\">:}<\/span><span class=\"pln\">$TOMCAT_NATIVE_LIBDIR\r\n\r\n<\/span><span class=\"com\"># runtime dependencies for Tomcat Native Libraries<\/span>\r\n<span class=\"com\"># Tomcat Native 1.2+ requires a newer version of OpenSSL than debian:jessie has available<\/span>\r\n<span class=\"com\"># &gt; checking OpenSSL library version &gt;= 1.0.2...<\/span>\r\n<span class=\"com\"># &gt; configure: error: Your version of OpenSSL is not compatible with this version of tcnative<\/span>\r\n<span class=\"com\"># see http:\/\/tomcat.10.x6.nabble.com\/VOTE-Release-Apache-Tomcat-8-0-32-tp5046007p5046024.html (and following discussion)<\/span>\r\n<span class=\"com\"># and https:\/\/github.com\/docker-library\/tomcat\/pull\/31<\/span><span class=\"pln\">\r\nENV OPENSSL_VERSION <\/span><span class=\"lit\">1.1<\/span><span class=\"pun\">.<\/span><span class=\"lit\">0f<\/span><span class=\"pun\">-<\/span><span class=\"lit\">3<\/span><span class=\"pun\">+<\/span><span class=\"pln\">deb9u2\r\nRUN <\/span><span class=\"kwd\">set<\/span> <span class=\"pun\">-<\/span><span class=\"pln\">ex<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0currentVersion<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"$(dpkg-query --show --showformat '${Version}\\n' openssl)\"<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> dpkg <\/span><span class=\"pun\">--<\/span><span class=\"pln\">compare<\/span><span class=\"pun\">-<\/span><span class=\"pln\">versions <\/span><span class=\"str\">\"$currentVersion\"<\/span> <span class=\"str\">'&lt;&lt;'<\/span> <span class=\"str\">\"$OPENSSL_VERSION\"<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">then<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"kwd\">if<\/span> <span class=\"pun\">!<\/span><span class=\"pln\"> grep <\/span><span class=\"pun\">-<\/span><span class=\"pln\">q stretch <\/span><span class=\"pun\">\/<\/span><span class=\"pln\">etc<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">apt<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sources<\/span><span class=\"pun\">.<\/span><span class=\"pln\">list<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">then<\/span><span class=\"pln\"> \\\r\n<\/span><span class=\"com\"># only add stretch if we're not already building from within stretch<\/span><span class=\"pln\">\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">{<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'deb http:\/\/deb.debian.org\/debian stretch main'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'deb http:\/\/security.debian.org stretch\/updates main'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'deb http:\/\/deb.debian.org\/debian stretch-updates main'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">}<\/span> <span class=\"pun\">&gt;<\/span> <span class=\"str\">\/etc\/<\/span><span class=\"pln\">apt<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sources<\/span><span class=\"pun\">.<\/span><span class=\"pln\">list<\/span><span class=\"pun\">.<\/span><span class=\"pln\">d<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">stretch<\/span><span class=\"pun\">.<\/span><span class=\"pln\">list<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">{<\/span><span class=\"pln\"> \\\r\n<\/span><span class=\"com\"># add a negative \"Pin-Priority\" so that we never ever get packages from stretch unless we explicitly request them<\/span><span class=\"pln\">\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'Package: *'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'Pin: release n=stretch*'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'Pin-Priority: -10'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n<\/span><span class=\"com\"># ... except OpenSSL, which is the reason we're here<\/span><span class=\"pln\">\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'Package: openssl libssl*'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">\"Pin: version $OPENSSL_VERSION\"<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">'Pin-Priority: 990'<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">}<\/span> <span class=\"pun\">&gt;<\/span> <span class=\"str\">\/etc\/<\/span><span class=\"pln\">apt<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">preferences<\/span><span class=\"pun\">.<\/span><span class=\"pln\">d<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">stretch<\/span><span class=\"pun\">-<\/span><span class=\"pln\">openssl<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"kwd\">fi<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0apt<\/span><span class=\"pun\">-<\/span><span class=\"kwd\">get<\/span><span class=\"pln\"> update<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0apt<\/span><span class=\"pun\">-<\/span><span class=\"kwd\">get<\/span><span class=\"pln\"> install <\/span><span class=\"pun\">-<\/span><span class=\"pln\">y <\/span><span class=\"pun\">--<\/span><span class=\"kwd\">no<\/span><span class=\"pun\">-<\/span><span class=\"pln\">install<\/span><span class=\"pun\">-<\/span><span class=\"pln\">recommends openssl<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"$OPENSSL_VERSION\"<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rm <\/span><span class=\"pun\">-<\/span><span class=\"pln\">rf <\/span><span class=\"pun\">\/<\/span><span class=\"kwd\">var<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">lib<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">apt<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">lists<\/span><span class=\"com\">\/*; \\\r\n\u00a0\u00a0\u00a0\u00a0fi\r\n\r\nRUN apt-get update &amp;&amp; apt-get install -y --no-install-recommends \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0libapr1 \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; rm -rf \/var\/lib\/apt\/lists\/*\r\n\r\n# see https:\/\/www.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/KEYS\r\n# see also \"update.sh\" (https:\/\/github.com\/docker-library\/tomcat\/blob\/master\/update.sh)\r\nENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23\r\n\r\nENV TOMCAT_MAJOR 8\r\nENV TOMCAT_VERSION 8.5.32\r\nENV TOMCAT_SHA512 fc010f4643cb9996cad3812594190564d0a30be717f659110211414faf8063c61fad1f18134154084ad3ddfbbbdb352fa6686a28fbb6402d3207d4e0a88fa9ce\r\n\r\nENV TOMCAT_TGZ_URLS \\\r\n# https:\/\/issues.apache.org\/jira\/browse\/INFRA-8753?focusedCommentId=14735394#comment-14735394\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/www.apache.org\/dyn\/closer.cgi?action=download&amp;filename=tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz \\\r\n# if the version is outdated, we might have to pull from the dist\/archive :\/\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/www-us.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz \\\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/www.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz \\\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/archive.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz\r\n\r\nENV TOMCAT_ASC_URLS \\\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/www.apache.org\/dyn\/closer.cgi?action=download&amp;filename=tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \\\r\n# not all the mirrors actually carry the .asc files :'(\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/www-us.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \\\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/www.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \\\r\n\u00a0\u00a0\u00a0\u00a0https:\/\/archive.apache.org\/dist\/tomcat\/tomcat-$TOMCAT_MAJOR\/v$TOMCAT_VERSION\/bin\/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc\r\n\r\nRUN set -eux; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0savedAptMark=\"$(apt-mark showmanual)\"; \\\r\n\u00a0\u00a0\u00a0\u00a0apt-get update; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0apt-get install -y --no-install-recommends gnupg dirmngr; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0export GNUPGHOME=\"$(mktemp -d)\"; \\\r\n\u00a0\u00a0\u00a0\u00a0for key in $GPG_KEYS; do \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0gpg --keyserver ha.pool.sks-keyservers.net --recv-keys \"$key\"; \\\r\n\u00a0\u00a0\u00a0\u00a0done; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0apt-get install -y --no-install-recommends wget ca-certificates; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0success=; \\\r\n\u00a0\u00a0\u00a0\u00a0for url in $TOMCAT_TGZ_URLS; do \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if wget -O tomcat.tar.gz \"$url\"; then \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success=1; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi; \\\r\n\u00a0\u00a0\u00a0\u00a0done; \\\r\n\u00a0\u00a0\u00a0\u00a0[ -n \"$success\" ]; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0echo \"$TOMCAT_SHA512 *tomcat.tar.gz\" | sha512sum -c -; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0success=; \\\r\n\u00a0\u00a0\u00a0\u00a0for url in $TOMCAT_ASC_URLS; do \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if wget -O tomcat.tar.gz.asc \"$url\"; then \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success=1; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi; \\\r\n\u00a0\u00a0\u00a0\u00a0done; \\\r\n\u00a0\u00a0\u00a0\u00a0[ -n \"$success\" ]; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz; \\\r\n\u00a0\u00a0\u00a0\u00a0tar -xvf tomcat.tar.gz --strip-components=1; \\\r\n\u00a0\u00a0\u00a0\u00a0rm bin\/*.bat; \\\r\n\u00a0\u00a0\u00a0\u00a0rm tomcat.tar.gz*; \\\r\n\u00a0\u00a0\u00a0\u00a0rm -rf \"$GNUPGHOME\"; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0nativeBuildDir=\"$(mktemp -d)\"; \\\r\n\u00a0\u00a0\u00a0\u00a0tar -xvf bin\/tomcat-native.tar.gz -C \"$nativeBuildDir\" --strip-components=1; \\\r\n\u00a0\u00a0\u00a0\u00a0apt-get install -y --no-install-recommends \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dpkg-dev \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0gcc \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0libapr1-dev \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0libssl-dev \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0make \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"openjdk-${JAVA_VERSION%%[.~bu-]*}-jdk=$JAVA_DEBIAN_VERSION\" \\\r\n\u00a0\u00a0\u00a0\u00a0; \\\r\n\u00a0\u00a0\u00a0\u00a0( \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0export CATALINA_HOME=\"$PWD\"; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cd \"$nativeBuildDir\/native\"; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0gnuArch=\"$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)\"; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.\/configure \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--build=\"$gnuArch\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--libdir=\"$TOMCAT_NATIVE_LIBDIR\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--prefix=\"$CATALINA_HOME\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--with-apr=\"$(which apr-1-config)\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--with-java-home=\"$(docker-java-home)\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0--with-ssl=yes; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0make -j \"$(nproc)\"; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0make install; \\\r\n\u00a0\u00a0\u00a0\u00a0); \\\r\n\u00a0\u00a0\u00a0\u00a0rm -rf \"$nativeBuildDir\"; \\\r\n\u00a0\u00a0\u00a0\u00a0rm bin\/tomcat-native.tar.gz; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n# reset apt-mark's \"manual\" list so that \"purge --auto-remove\" will remove all build dependencies\r\n\u00a0\u00a0\u00a0\u00a0apt-mark auto '.*' &gt; \/dev\/null; \\\r\n\u00a0\u00a0\u00a0\u00a0[ -z \"$savedAptMark\" ] || apt-mark manual $savedAptMark; \\\r\n\u00a0\u00a0\u00a0\u00a0apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \\\r\n\u00a0\u00a0\u00a0\u00a0rm -rf \/var\/lib\/apt\/lists\/*; \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n# sh removes env vars it doesn't support (ones with periods)\r\n# https:\/\/github.com\/docker-library\/tomcat\/issues\/77\r\n\u00a0\u00a0\u00a0\u00a0find .\/bin\/ -name '*.sh' -exec sed -ri 's|^#!\/bin\/sh$|#!\/usr\/bin\/env bash|' '{}' +\r\n\r\n# verify Tomcat Native is working properly\r\nRUN set -e \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; nativeLines=\"$(catalina.sh configtest 2&gt;&amp;1)\" \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; nativeLines=\"$(echo \"$nativeLines\" | grep 'Apache Tomcat Native')\" \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; nativeLines=\"$(echo \"$nativeLines\" | sort -u)\" \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; if ! echo \"$nativeLines\" | grep 'INFO: Loaded APR based Apache Tomcat Native library' &gt;&amp;2; then \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo &gt;&amp;2 \"$nativeLines\"; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit 1; \\\r\n\u00a0\u00a0\u00a0\u00a0fi\r\n\r\nEXPOSE 8080\r\nCMD [\"catalina.sh\", \"run\"]<\/span><\/pre>\n<p>\u901a\u8fc7Dockerfile\u521b\u5efa\u4e00\u4e2a\u955c\u50cf\uff0c\u66ff\u6362\u6210\u4f60\u81ea\u5df1\u7684\u540d\u5b57<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$ docker build <\/span><span class=\"pun\">-<\/span><span class=\"pln\">t tomcat <\/span><span class=\"pun\">.<\/span><\/pre>\n<p>\u521b\u5efa\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u672c\u5730\u7684\u955c\u50cf\u5217\u8868\u91cc\u67e5\u627e\u5230\u521a\u521a\u521b\u5efa\u7684\u955c\u50cf<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$ docker images<\/span><span class=\"pun\">|<\/span><span class=\"pln\">grep tomcat\r\ntomcat              latest              <\/span><span class=\"lit\">70f819d3d2d9<\/span>        <span class=\"lit\">7<\/span><span class=\"pln\"> days ago          <\/span><span class=\"lit\">335.8<\/span><span class=\"pln\"> MB<\/span><\/pre>\n<hr \/>\n<h2>\u4f7f\u7528tomcat\u955c\u50cf<\/h2>\n<h3>\u8fd0\u884c\u5bb9\u5668<\/h3>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~<\/span><span class=\"str\">\/tomcat$ docker run --name tomcat -p 8080:8080 -v $PWD\/<\/span><span class=\"pln\">test<\/span><span class=\"pun\">:<\/span><span class=\"str\">\/usr\/<\/span><span class=\"kwd\">local<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tomcat<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">webapps<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">test <\/span><span class=\"pun\">-<\/span><span class=\"pln\">d tomcat  \r\nacb33fcb4beb8d7f1ebace6f50f5fc204b1dbe9d524881267aa715c61cf75320\r\nrunoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$<\/span><\/pre>\n<p>\u547d\u4ee4\u8bf4\u660e\uff1a<\/p>\n<p><strong>-p 8080:8080\uff1a<\/strong>\u5c06\u5bb9\u5668\u76848080\u7aef\u53e3\u6620\u5c04\u5230\u4e3b\u673a\u76848080\u7aef\u53e3<\/p>\n<p><strong>-v $PWD\/test:\/usr\/local\/tomcat\/webapps\/test\uff1a<\/strong>\u5c06\u4e3b\u673a\u4e2d\u5f53\u524d\u76ee\u5f55\u4e0b\u7684test\u6302\u8f7d\u5230\u5bb9\u5668\u7684\/test<\/p>\n<p>\u67e5\u770b\u5bb9\u5668\u542f\u52a8\u60c5\u51b5<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">tomcat$ docker ps \r\nCONTAINER ID    IMAGE     COMMAND               <\/span><span class=\"pun\">...<\/span><span class=\"pln\"> PORTS                    NAMES\r\nacb33fcb4beb    tomcat    <\/span><span class=\"str\">\"catalina.sh run\"<\/span>     <span class=\"pun\">...<\/span> <span class=\"lit\">0.0<\/span><span class=\"pun\">.<\/span><span class=\"lit\">0.0<\/span><span class=\"pun\">:<\/span><span class=\"lit\">8080<\/span><span class=\"pun\">-&gt;<\/span><span class=\"lit\">8080<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tcp   tomcat<\/span><\/pre>\n<p>\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.runoob.com\/wp-content\/uploads\/2016\/06\/tomcat01.png\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u65b9\u6cd5\u4e00\u3001docker pull tomcat \u67e5\u627eDocker Hub\u4e0a\u7684tomcat\u955c\u50cf runoob@ru &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/b.yesiyu.top\/?p=59\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cDocker \u5b89\u88c5 Tomcat\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-59","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts\/59","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=59"}],"version-history":[{"count":1,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts\/59\/revisions"}],"predecessor-version":[{"id":60,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts\/59\/revisions\/60"}],"wp:attachment":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=59"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=59"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=59"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}