[英]Can't dockerize spring micro-services multi module app
I'm building a application with JAVA 11, maven, spring.我正在使用 JAVA 11、maven、spring 构建应用程序。 It has a root pom to organize all child modules as seen on: https://github.com/erickmob/spring-petclinic-microservices
它有一个根 pom 来组织所有子模块,如下所示: https://github.com/erickmob/spring-petclinic-microservices
Here's the project structure:这是项目结构:
I've tried to create on the root project this docker-compose.yml:我试图在根项目上创建这个 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
And in the config-server this dockerfile:在配置服务器中这个 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"]
But it keeps given me this output error:但它一直给我这个 output 错误:
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
If I make a mvn clean
install on root folder or config-server folder, everything is ok, but when I try to run docker-compose build it gives me error saying that cannot found the parent pom.如果我在根文件夹或 config-server 文件夹上进行
mvn clean
install,一切正常,但是当我尝试运行 docker-compose build 时,它给了我一个错误,说找不到父 pom。
This is not really Docker, but Maven.这不是真正的 Docker,而是 Maven。
You are building your config-server/
project only (and here is when Docker is in the middle ) but the "context" sent to Docker is just what's inside config-server/
and not the entire project.您正在构建您的
config-server/
项目(此时 Docker位于中间),但发送到 Docker 的“上下文”只是config-server/
内部的内容,而不是整个项目。 To build config-server/
you need the entire project because you are referring/using a parent POM.要构建
config-server/
您需要整个项目,因为您正在引用/使用父POM。
IIUC,国际大学联合会,
docker-compose.yml 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 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"]
run the following command docker-compose up -d
logs:运行以下命令
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.