java - 通过maven插件生成docker镜像
问题描述
我已经手动编写了 dockerfile,但现在我需要配置 maven 来创建该文件并构建映像。我正在尝试使用 spotify 的 maven 插件来做到这一点。
这是我写的dockerfile,它可以工作:
FROM tomcat:8.0-jre8
RUN rm -rvf /usr/local/tomcat/webapps/ROOT
COPY ./context.xml /usr/local/tomcat/conf/
COPY /target/brainis-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
EXPOSE 8080
我需要确保我的 Maven 插件在构建映像之前生成相同的 docker 文件。你能告诉我如何实现吗?我当前的配置只生成第一个命令FROM tomcat:8.0-jre8
,如何在 maven 中配置该文件的其余部分?
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<imageName>spring-tomcat</imageName>
<baseImage>tomcat:8.0-jre8</baseImage>
</configuration>
</plugin>
解决方案
您需要将您的代码添加Dockerfile
到您的代码库中,即以/src/main/docker/Dockerfile
这种方式从 Spotify 的 Maven 插件中引用它:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.plugin.version}</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.war</include>
</resource>
</resources>
</configuration>
</plugin>
最后一部分,资源,将 docker build 基本路径放置在您想要的任何文件夹中,即/target
要包含哪些文件。
这将运行你的整个Dockerfile
脚本
推荐阅读
- fortran - 使用 gfortran 和 ifort 编译
- c# - 如何从 dll 中反编译/提取(cshtml--(剃刀视图))
- pandas - 如何从具有同一行值的两个字典创建数据框?
- python - Keras FFT层没有效果
- git - GH001:检测到大文件。您可能想尝试 Git 大文件存储
- bootstrap-4 - Bootstrap 4 - 我如何正确证明页脚中的某些内容?
- c++ - 涉及全局对象的循环依赖 C++
- maven - 如何假设从 maven Central 复制的 repo 的 bintray 所有权
- python - 从 Float 转换为 Int 改变了输出
- sql - 如何在 Access VBA 中运行附加查询以根据表单字段中的数量创建一定数量的相同记录?