我需要在(相对较大的)数量上构建相同的 Dockerfile。
特别是,我正在定制 Apache Tomcat。使用相同的 Dockerfile,对基础 Tomcat 进行一些增强,我需要构建几个基于不同版本的自定义 Tomcat(尤其是至少基线8.5
并9
结合 JDK8
和11
)。
作为一个练习,只要在 Docker 上获得更多练习,我什至可以决定构建所有 Tomcat 镜像,这些镜像有很多风格,作为定制构建。
鉴于我已经有一个 Dockerfile ......
ARG TOMCAT_VERSION
FROM tomcat:${TOMCAT_VERSION}
MAINTAINER Some One (someone@example.biz)
ARG POSTGRES_JDBC_VERSION="42.2.16"
ARG ORACLE_JDBC_VERSION="19.7.0.0"
ARG LIFECYCLE_LISTENER_VERSION="1.0.1"
ENV MAX_MEMORY_SIZE 4096
ARG CONTEXT_NAME
ADD https://repo1.maven.org/maven2/net/aschemann/tomcat/tomcat-lifecyclelistener/${LIFECYCLE_LISTENER_VERSION}/tomcat-lifecyclelistener-${LIFECYCLE_LISTENER_VERSION}.jar /usr/local/tomcat/lib
ADD https://repo1.maven.org/maven2/org/postgresql/postgresql/${POSTGRES_JDBC_VERSION}/postgresql-${POSTGRES_JDBC_VERSION}.jar /usr/local/tomcat/lib
ADD https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/${ORACLE_JDBC_VERSION}/ojdbc8-${ORACLE_JDBC_VERSION}.jar /usr/local/tomcat/lib
COPY tomcat-${TOMCAT_MAJOR}/server.xml /usr/local/tomcat/conf/ #This enables AJP
EXPOSE 8009
EXPOSE 8080
VOLUME #some volume
# etc etc
我需要实现的是,可能使用 Docker Hub 的自动构建是
for (tomcatVersion in "8.5", "9")
for (javaVersion in "jd8-slim", "jdk11-slim", "jdk14")
docker build --build-arg TOMCAT_VERSION=$tomcatVersion+"-"+$javaVersion -t examplebiz/tomcat:$tomcatVersion+"-"+$javaVersion .
目前 Docker Hub 向我提供使用多个 Github 分支
但我不喜欢这样,因为单个 Dockerfile 就足够了。我可以结合 6 个版本并从我的电脑手动运行构建
我还不太了解构建挂钩。也许有解决方案?
我可以就如何设计构建获得一些建议吗?