我们需要在 Dockerfile 中包含 Maven 工件(jar 文件)。该 jar 文件在我们的应用程序的运行命令中用作参数。在 Dockerfile 中复制不存在于构建目录中且仅存在于本地 Maven 存储库中的 Maven 工件的正确方法是什么?我发现由于 Maven 工件不会在构建上下文中,因此复制它的唯一方法是从容器的 .m2 目录(.m2 目录包含所有 Maven 工件)。这是正确的还是有更好的方法?谢谢
Wil*_*aan -1
您可以通过在创建 jar 时将 jar 复制到您的映像来做到这一点。
这是一个例子。假设您想使用 Quava jar,并且它已经在您的 POM 中列为依赖项。
在您的根项目中创建Makefile(其中有 POM.xml),
create_image: Dockerfile build
docker build . -t myimage:mytag
build: POM.xml
mvn clean install
Run Code Online (Sandbox Code Playgroud)
在同一目录中创建 Dockerfile:
FROM centos
COPY ~/.m2/repository/com/google/guava/14.0.1/guava.jar /
CMD ["sh run.sh", "/quava.jar']
Run Code Online (Sandbox Code Playgroud)
并简单地使用以下命令创建图像:
make create_image