这是我在Stack Overflow上提出的早期问题的后续内容。我正在构建一个基于Spring Boot Cloud的服务。我在使用Docker的容器中运行它。我终于让它在我的本地机器上运行了。
# Use postgres/example user/password credentials
version: '3.2'
services:
db:
image: postgres
ports:
- 5000:5432
environment:
POSTGRES_PASSWORD: example
volumes:
- type: volume
source: psql_data
target: /var/lib/postgresql/data
networks:
- app
restart: always
config:
image: kellymarchewa/config_server
ports:
- 8888:8888
networks:
- app
volumes:
- /home/kelly/.ssh:/root/.ssh
restart: always
search:
image: kellymarchewa/search_api
networks:
- app
restart: always
ports:
- 8081:8081
depends_on:
- db
- config
- inventory
inventory:
image: kellymarchewa/inventory_api
depends_on:
- db
- config
# command: ["/home/kelly/workspace/git/wait-for-it/wait-for-it.sh", "config:8888"]
ports:
- 8082:8082
networks:
- app
restart: always
volumes:
psql_data:
networks:
app:
之前,我在配置服务器上的客户端依赖性方面遇到了困难(配置服务器在客户端尝试访问它时没有完全启动)。但是,我使用spring-retry
解决了此问题。现在,虽然我可以在本地计算机上使用docker-compose up
运行它,但在由Google Cloud服务托管的虚拟机上运行相同的命令(使用相同的Docker文件)会失败。
inventory_1 | java.lang.IllegalStateException: Could not locate PropertySource and the fail fast property is set, failing
但是,它似乎在查询适当的位置:
inventory_1 | 2018-02-10 00:23:00.945 INFO 1 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://config:8888
我不确定是什么问题,因为它们都使用相同的docker-compose文件和配置服务器本身运行。
配置服务器的application.properties:
server.port=8888
management.security.enabled=false
spring.cloud.config.server.git.uri=git@gitlab.com:leisurely-diversion/configuration.git
# spring.cloud.config.server.git.uri=${HOME}/workspace/eclipse/leisurely_diversion_config
客户端bootstrap.properties:
spring.application.name=inventory-client
#spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.uri=http://config:8888
management.security.enabled=false
spring.cloud.config.fail-fast=true
spring.cloud.config.retry.max-attempts=10
spring.cloud.config.retry.initial-interval=2000
编辑:
经过进一步检查,似乎配置服务器无法拉出存储应用程序属性的git存储库。但是,由于以下原因,我不确定为什么会出现这种情况:
volumes
来引用我的docker-compose文件中的/home/kelly/.ssh
。 known_hosts
文件包含在此目录中。volumes
)在我的开发机器上运行良好。任何帮助都将不胜感激。
答案 0 :(得分:0)
最终,我能够解决这个问题。虽然这在几天前实际上得到了解决,但我发布了一般解决方案,希望它在将来可能有用。
首先,我能够确认(通过使用curl
来调用我的服务器的一个端点),底层问题是配置服务器无法提取git repo。
最初,我有点困惑 - 我的SSH密钥已设置好,我能够git clone
来自VM的repo。但是,在查看Spring Cloud documention时,我发现known_hosts
文件必须采用ssh-rsa
格式。但是,VM的ssh实用程序以不同的格式保存它们(即使我的开发机器和VM都在运行Debian 9)。要解决此问题,请以ssh-rsa
格式添加相应的GitLab(或其他主机)条目。检查一个/etc/ssh/sshd_config
也可能有价值。