我在本地运行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
答案 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来指定要放置检出的存储库的确切位置。>
您可以尝试看看是否有帮助?