spring-云配置在本地运行正常,但在 docker 上显示无法克隆或检出存储库

spring-cloud config runs ok locally but on docker it shows Cannot clone or checkout repository

我 运行正在 Spring 本地云配置服务器正常,但我想为项目尝试 docker。并且相同的代码在 docker !

上出现了一些错误

因为配置服务器将从 git 中提取配置,当我们在 docker 我发现日志说:

Cannot clone or checkout repository] with root cause org.eclipse.jgit.errors.CheckoutConflictException: Checkout conflict with files:

我尝试删除所有图像并清除 docker 缓存并重建并重新 运行 它,最后显示相同的错误

spring:
    application:
        name: ace-config
    profiles:
        active: dev
    cloud:
      config:
        server:
          git:
            uri: https://gitlab.com/xxx/myproj.git
            searchPaths: config
            username: xxx
            password: xxx
            default-label: develop

这是我的docker文件

FROM livingobjects/jre8
VOLUME /tmp
ADD ./target/ace-config.jar app.jar
RUN rm -rf  /tmp/*
RUN bash -c 'touch /app.jar'

这是我的 docker-compose.yml

ace-config:
    build: ./ace-config
    image: mipay/ace-config:latest
    restart: always
    depends_on:
    - ace-center
    command: >
      bash -c "
      while ! (nc -z unipay 8761);
      do sleep 5;
      echo 'Waiting for config and center services to start-up...';
      done;
      java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
      "
    ports:
    - "8750:8750"
    extra_hosts:
    - "unipay2:172.31.68.159"
    - "unipay:172.31.68.159"
    - "mipay:172.31.68.159"
    volumes:
    - /opt/logs/:/opt/logs

您可能遇到过这个问题:

https://github.com/spring-cloud/spring-cloud-config/issues/407

但实际上,Spring 云配置服务器承认配置服务器中的本地副本可能变脏

(for example, folder content changes by an OS process)

为此,可以将 force-pull 属性 设置为 true 为 documented here

此外,由于系统临时目录(例如 /tmp/)可以被 OS 进程修改,您可以使用 spring.cloud.config.server.git.basedir 指定要放置检出存储库的确切位置,因为 documented here.

你能试试看这些是否有帮助吗?