【问题标题】:Docker image cannot read / find a .jar file from another image?Docker 映像无法从另一个映像读取/查找 .jar 文件?
【发布时间】:2018-01-03 10:22:45
【问题描述】:

我是 Java 和 Docker 的新手。我有两个 Git 存储库:

  • 项目-cms
  • 项目应用

两个存储库都是 Java 项目。我的指示是从 project-cms 到 mvn clean install,然后从 project-app 到 mvn clean install && mvn build,以便 project-app 可以使用 project-cms 生成的 .war 文件。我正在尝试通过像这样创建 project-cms 的图像来 Dockerize 这个设置:

FROM maven:3.5.2-jdk-8-alpine
LABEL Name=project-cms Version=1.0.0 

# Container configuration
RUN mkdir /project-cms
COPY . /project-cms
WORKDIR /project-cms
VOLUME /project-cms
RUN mvn clean install

这很好用,当我执行docker image ls 时,我现在看到了一个名为 project-cms:latest 的图像。我正在尝试使用此图像来构建我的项目应用程序,如下所示:

FROM project-cms:latest
LABEL Name=project-app Version=1.0.0 

# Container configuration
RUN mkdir /app
COPY . /app
WORKDIR /app
VOLUME /app
RUN mvn clean install && mvn build
EXPOSE 8080
CMD [ "mvn", "tomcat7:run" ]

我的理解是 project-cms 中的 .war 文件应该对 project-app 可用,因为我在上面运行 FROM project-cms:latest。当我尝试构建此映像时,它会引发以下错误:

[ERROR] Failed to execute goal on project xxxx: Could not resolve dependencies for project com.xxxx:xxxx:war:2.28.1: Could not find artifact com.xxxx:publishing-site:jar:classes:1.02.26 in hippo (http://maven.onehippo.com/maven2/) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
The command '/bin/sh -c mvn clean install && mvn build' returned a non-zero code: 1

请注意,我在上面的错误消息中使用xxxx 编辑了实际项目名称。我的想法是在我们的 AWS Elastic Container Service 中托管 project-cms Docker 映像,以便其他开发人员可以直接提取该映像来构建项目应用程序,而不是在每台开发人员机器上手动安装 Maven 等。任何解决此问题的帮助表示赞赏。

【问题讨论】:

    标签: java maven docker


    【解决方案1】:

    maven 本地 repo 是之前版本映像中的一个卷,在 https://github.com/carlossg/docker-maven/pull/57 中删除

    如果你使用FROM maven:3.5-jdk-8-alpine,它应该可以工作

    【讨论】:

    • 那不是 Nag 使用的图像吗?
    • @csanchez 有什么办法可以使构建的 .jar 文件位于 project-cms 中?这样,我可以在我们组织的 AWS 中托管 project-cms Docker 映像,并让其他开发人员直接拉取它,而不是每次都构建两个映像。
    • maven:3.5.2-jdk-8-alpine 与 maven:3.5-jdk-8-alpine 不同。如果您希望内容保留在图像中,则不应将它们放在卷中,因为它们不包含在图像中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2021-11-04
    • 2021-06-16
    • 2021-09-01
    • 2017-02-11
    • 2021-02-03
    相关资源
    最近更新 更多