1

我在连接到配置服务器时遇到问题。我不确定我做错了什么。我已经配置了在端口 8888 上名为“config-server”的 docker 容器中运行的服务器。

http://config-server:8888. Will be trying the next url if available
2020-08-10 17:38:35.196 ERROR 11052 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Could not locate PropertySource and the fail fast property is set, failing
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate(ConfigServicePropertySourceLocator.java:148) ~[spring-cloud-config-client-2.2.3.RELEASE.jar:2.2.3.RELEASE]

发现服务器 bootstrap.yml

spring:
  application:
    name: discovery-server
  cloud:
    config:
      uri: http://config-server:8888
      fail-fast: true
      retry:
        max-attempts: 20

编辑
配置服务器 Dockerfile

FROM openjdk:11.0-jre
ADD ./target/config-server-0.0.1-SNAPSHOT.jar config-server-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "/config-server-0.0.1-SNAPSHOT.jar"]
EXPOSE 8888

docker run -p 8888:8888 --name config-server 3deb982c96fe
发现服务器未在 docker 中运行。首先我想创建它的 .jar 文件

4

1 回答 1

0

原始问题已经在评论中回答,在这里回答最后一点以获得更好的格式:

每次运行或.jar 文件都会在/target您的应用程序的文件夹中构建。为了在 Docker 中运行它,您必须将 jar 文件从您的目录复制到 Docker 容器内部文件,然后运行它 ( )。mvn clean installgradle build/targetjava -jar nameOfYourJar.jar

jar 的名称可以在 maven/gradle 设置中定义,但为了保持 Dockerfile 的通用性,我建议遵循 Dockerfile:

FROM openjdk:11.0-jre
ARG JAR_FILE=/target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","app.jar"]

随着ARG JAR_FILE您将任何 jar 文件(在目标中找到)的路径保存为JAR_FILEdocker 中的变量,然后您可以将其复制到您的 Docker 内部文件中,它将以 name 存储app.jar

ENTRYPOINT 是将在容器启动时运行的命令。

将 Dockerfile 放在/target目录旁边(因此在应用程序的根文件夹中)并在终端中运行以下命令:

docker build -t springapp . && docker run --rm -d -p 8080:8080 springapp

希望这可以澄清一切。

于 2020-08-10T18:18:12.350 回答