Tomcat containerにwarをデプロイするDockerfile
tomcat上で動いているアプリをk8s上で稼働させるためにdocker nizeしました。面倒くさいかと思っていましたが、意外と簡単だったので共有します。 以下のようなDockerfileを書けばよいです。
FROM tomcat:9.0.16-jre8-alpine RUN rm -rf /usr/local/tomcat/webapps/* COPY tomcat/server.xml /usr/local/tomcat/conf/server.xml COPY target/awesome.war /usr/local/tomcat/webapps/awesome.war EXPOSE 8080 CMD ["catalina.sh", "run"]
server.xmlについては、そのままデプロイするとwar名のcontext pathが設定されてしまうため、context pathがルートとなるように以下の設定を追記したserver.xmlで上書きしています。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/" docBase="/usr/local/tomcat/webapps/awesome.war" reloadable="true" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
簡単ですが、こんな感じでした