【问题标题】:Can't dockerize spring micro-services multi module app无法对 spring 微服务多模块应用程序进行 dockerize
【发布时间】:2020-11-16 00:39:03
【问题描述】:

我正在使用 JAVA 11、maven、spring 构建应用程序。 它有一个根 pom 来组织所有子模块,如下所示: https://github.com/erickmob/spring-petclinic-microservices

这是项目结构:

我尝试在根项目上创建这个 docker-compose.yml:

  version: '2'
    services:
      config-server:
        build:
          context: ./config-server
          dockerfile: Dockerfile
        image: config-server
        container_name: config-server
        mem_limit: 512M
        ports:
          - 8888:8888

在配置服务器中这个 dockerfile:

FROM maven:3.6.3-adoptopenjdk-11 as build

WORKDIR /usr/src/config-server/
COPY . /usr/src/config-server/

RUN mvn clean package

FROM adoptopenjdk/openjdk11:alpine-jre

RUN addgroup -S spring && adduser -S spring -G spring

RUN mkdir -p /files &&  \
    chown -R spring:spring /files

USER spring:spring


VOLUME /files

WORKDIR /app

COPY --from=build /usr/src/config-server/target/config-server-0.0.1-SNAPSHOT.jar /app/app.jar

EXPOSE 8888

ENTRYPOINT ["java", "-jar", "app.jar"]

但它一直给我这个输出错误:

Building config-server
Step 1/13 : FROM maven:3.6.3-adoptopenjdk-11 as build
 ---> 739e519745cd
Step 2/13 : WORKDIR /usr/src/config-server/
 ---> Using cache
 ---> da21e56bb1f0
Step 3/13 : COPY . /usr/src/config-server/
 ---> Using cache
 ---> 08a5585f625f
Step 4/13 : RUN mvn clean package
 ---> Running in ed76a0ae6b41
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for com.erickmob.petclinic:config-server:1.0.0-SNAPSHOT: Could not find artifact com.erickmob.pet-clinic:pet-clinic:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 13
 @ 
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR]   The project com.erickmob.petclinic:config-server:1.0.0-SNAPSHOT (/usr/src/config-server/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for com.erickmob.petclinic:config-server:1.0.0-SNAPSHOT: Could not find artifact com.erickmob.pet-clinic:pet-clinic:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 13 -> [Help 2]
[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/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException
ERROR: Service 'config-server' failed to build: The command '/bin/sh -c mvn clean package' returned a non-zero code: 1

如果我在根文件夹或 config-server 文件夹上安装 mvn clean,一切正常,但是当我尝试运行 docker-compose build 时,它给我错误提示找不到父 pom。

【问题讨论】:

    标签: spring-boot docker maven docker-compose dockerfile


    【解决方案1】:

    不是真的 Docker,而是 Maven。

    您只是在构建您的 config-server/ 项目(此时是 Docker在中间),但发送给 Docker 的“上下文”只是@里面的内容987654322@ 而不是整个项目。要构建 config-server/,您需要整个项目,因为您正在引用/使用 parent POM。

    【讨论】:

    • 与 @x80486 的结论相同:如果您在 docker 外部(在您的机器上)复制步骤并将 /usr/src/config-server/ 复制到隔离目录中,从项目目录中运行 mvn clean package 您将收到从容器中抛出的相同异常。
    • 如何将整个项目设置为 docker 文件的上下文?
    • 这是设置构建上下文的部分:build: context: ./config-server。改变那部分。
    【解决方案2】:

    IIUC,

    docker-compose.yml

    version: "2"
    services:
      config-server:
        build:
          context: ./
          dockerfile: Dockerfile
        image: config-server
        container_name: config-server
        mem_limit: 512M
        ports:
          - 8888:8888
    

    Dockerfile

    FROM maven:3.6.3-adoptopenjdk-11 as build
    
    COPY . /usr/src/
    
    WORKDIR /usr/src/
    
    
    RUN mvn clean package
    
    FROM adoptopenjdk/openjdk11:alpine-jre
    
    RUN addgroup -S spring && adduser -S spring -G spring
    
    RUN mkdir -p /files &&  \
            chown -R spring:spring /files
    
    USER spring:spring
    
    
    VOLUME /files
    
    WORKDIR /app
    
    COPY --from=build /usr/src/config-server/target/config-server-0.0.1-SNAPSHOT.jar /app/app.jar
    
    EXPOSE 8888
    
    ENTRYPOINT ["java", "-jar", "app.jar"]
    
    

    运行以下命令docker-compose up -d 日志:

    root@ubuntu:/home/sathya/Desktop/stackoverflo/docker/spring-boot/spring-petclinic-microservices# docker-compose up -d
    Building config-server
    Step 1/13 : FROM maven:3.6.3-adoptopenjdk-11 as build
     ---> a4579cf3debf
    Step 2/13 : COPY . /usr/src/
     ---> 9841e6033a86
    Step 3/13 : WORKDIR /usr/src/
     ---> Running in aa2526d60d42
    Removing intermediate container aa2526d60d42
     ---> 6e3b35f66218
    Step 4/13 : RUN mvn clean package
     ---> Running in 5b2bac4dcef4
    [INFO] Scanning for projects...
    Downloading from central: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.3.2.RELEASE/spring-boot-starter-parent-2.3.2.RELEASE.pom
    Downloaded from central: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.3.2.RELEASE/spring-boot-starter-parent-2.3.2.RELEASE.pom (8.6 kB at 2.2 kB/s)
    Downloading from central: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.2.RELEASE/spring-boot-dependencies-2.3.2.RELEASE.pom
    Downloaded from central: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.2.RELEASE/spring-boot-dependencies-2.3.2.RELEASE.pom (122 kB at 25 kB/s)
    Downloading from central: https://repo.maven.apache.org/maven2/com/datastax/oss/java-driver-bom/4.6.1/java-driver-bom-4.6.1.pom
    Downloaded from central: https://repo.maven.apache.org/maven2/com/datastax/oss/java-driver-bom/4.6.1/java-driver-bom-4.6.1.pom (3.8 kB at 3.1 kB/s)
    Downloading from central: https://repo.maven.apache.org/maven2/io/dropwizard/metrics/metrics-bom/4.1.11/metrics-bom-4.1.11.pom
    

    【讨论】:

      猜你喜欢
      • 2022-07-08
      • 2021-12-05
      • 1970-01-01
      • 2020-11-29
      • 2019-11-27
      • 2018-01-27
      • 2018-01-10
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多