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

时间:2019-08-09 03:03:39

标签: docker docker-compose spring-cloud-config

我在本地运行Spring Cloud Config Server OK,但是我想为项目尝试docker。并且相同的代码在docker上出现了一些错误!

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

  

无法克隆或检出存储库]的根本原因   org.eclipse.jgit.errors.CheckoutConflictException:检出与文件冲突:

我尝试删除所有图像并清除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

这是我的dockerfile

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

1 个答案:

答案 0 :(得分:0)

您可能遇到过此问题:

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

但是实际上,Spring Cloud Config Server承认配置服务器中的本地副本会变脏

  

(例如,文件夹内容由操作系统进程更改)

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

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

您可以尝试看看是否有帮助?