我已经使用创建了一个简单的Micronaut应用程序
mn create-app app_name --build maven
在需要的情况下使用JDK 11。
这将创建一个可以正常编译的maven项目,但其中包含如下所示的Dockerfile
:
FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
COPY target/app_name*.jar app_name.jar
EXPOSE 8080
CMD java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dcom.sun.management.jmxremote -noverify ${JAVA_OPTS} -jar app_name.jar
但是,Maven AFAICT中没有包含docker build。
所以我包括了这个
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile-maven-version}</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>dockerUser/app_name</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
确实可以构建docker映像,但并非没有人工干预。原因是在mvn package
上,在target/
中创建了三个jar:
这使得docker目标失败
将COPY与多个源文件一起使用时,目标位置必须是目录,并以/
结尾
该消息确实有意义,因为所有jar都与Dockerfile
中的COPY源模式匹配。
现在,我只删除其他两个jar(原始的和着色的jar)并自己运行docker目标,但这仅在我以本地手动模式工作的情况下可以了。
我是否缺少某些东西,或者这是对Micronaut项目创建的疏忽?
答案 0 :(得分:1)
不幸的是,我无法帮助您配置Micronaut。但是,如果目的是复制主jar文件,并且未知的版本后缀是复制时使用通配符的原因,则可以将finalName
元素添加到pom.xml中以剥离版本信息。从JAR文件的名称开始:
<build>
<finalName>app_name</finalName>
</build>
答案 1 :(得分:0)
我错过了什么还是对Micronaut的疏忽 项目创建?
后者。
如果您在https://github.com/micronaut-projects/micronaut-profiles/issues提出问题,我们可以解决。
相关文件:
感谢您的输入。