Я пытаюсь использовать docker -создать для настройки проекта Spring Cloud.
Я использую конфигурацию Spring Cloud, поэтому у меня есть сервер конфигурации и некоторые службы.
На данный момент у меня есть 3 службы в моем docker -compose.yml
version: '3'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'root' # TODO: Change this
MYSQL_USER: 'user'
MYSQL_PASS: 'password'
MYSQL_ROOT_HOST: '%'
volumes:
- "db:/opt/mysql/docker:rw"
ports:
- "3307:3306"
config:
image: config-server
restart: always
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/ec_settings?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
ports:
- "8100:8100"
gateway:
image: gateway
restart: always
depends_on:
- config
environment:
- CONFIG_URI=http://config:8100
ports:
- '8081:8080'
volumes:
db: {}
В микросервисе шлюза, в bootstrap .yml, у меня есть этот параметр
spring:
cloud:
config:
uri: ${CONFIG_URI}
Когда я поднял docker composer я вижу, что служба шлюза пытается получить конфигурацию из http://config:8100
Fetching config from server at : http://config:8100
Итак, переменная переходит к Spring Boot, но docker -compose не заменяет название сервиса с его актуальной ссылкой. Очень странная вещь заключается в том, что переменная окружения SPRING_DATASOURCE_URL правильно переведена в службу конфигурации для подключения к службе БД.