Alpine Linux は何とベースサイズが 5 MB の超軽量の Docker イメージを用意できます。
通常 Docker コンテナはロールごとにコンテナを準備する運用となりますが、
複数コンテナを管理する場合、どうしても開発環境などで容量の問題がでてきてしまいます。
また、docker pull などコンテナの操作に容量の分だけ時間がかかってしまうので、
より効率良く開発を進めるためには、可能な限りコンテナを軽量にする必要があります。
以下は Tomcat7, Java8, JDBC Driver のみをセットアップした Dockerfile となります。 これで大体 117 MB くらいです。大体 70% 以上は削減できるかと思います。
FROM alpine:3.4 MAINTAINER sample ENV TOMCAT_MAJOR=7 \ TOMCAT_VERSION=7.0.69 \ TOMCAT_HOME=/opt/tomcat \ CATALINA_HOME=/opt/tomcat \ CATALINA_OUT=/dev/null \ MYSQL_JDBC_VERSION=5.1.39 \ POSTGRESQL_JDBC_VERSION=9.4.1207 RUN mkdir -p /opt && \ apk upgrade --update && \ apk add --update openjdk8-jre curl && \ curl -jksSL -o /tmp/apache-tomcat.tar.gz http://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && \ tar -C /opt -xvzf /tmp/apache-tomcat.tar.gz && \ ln -s /opt/apache-tomcat-${TOMCAT_VERSION} ${TOMCAT_HOME} && \ rm -rf ${TOMCAT_HOME}/webapps/* && \ curl -jksSL -o /tmp/mysql-connector-java.tar.gz http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_JDBC_VERSION}.tar.gz && \ tar -C /tmp -xvzf /tmp/mysql-connector-java.tar.gz && \ cp /tmp/mysql-connector-java-${MYSQL_JDBC_VERSION}/mysql-connector-java-${MYSQL_JDBC_VERSION}-bin.jar /opt/tomcat/lib/ && \ curl -jksSL -o /opt/tomcat/lib/postgresql-${POSTGRESQL_JDBC_VERSION}.jar http://jdbc.postgresql.org/download/postgresql-${POSTGRESQL_JDBC_VERSION}.jar && \ apk del curl && \ rm -rf /tmp/* /var/cache/apk/* EXPOSE 8080 ENTRYPOINT [ "/opt/tomcat/bin/catalina.sh", "run" ]