Как передать в проект Java ссылку на подключение к БД из файла Docker-compose или из Dockerfile?

Есть проект Java собирающийся в war-архив. Этот проект пишу у себя на ПК под Windows, поэтому в настройках подключения к БД прописано следующее:

spring.datasource.url=jdbc:mysql://localhost:3306/db_users?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

Пытаюсь запустить в Docker container, монтирую директорию с war-архивом в контейнер. Для этого загрузил 3 образа: tomcat:9.0.39-jdk11-openjdk; mysql; adminer.

Написал следующий YAML-файл для Docker-compose (не уверен, что верный):

services:
 
  authorizationService:
    image: tomcat  
    volumes:
        - E:\Authorization_service_prjct\war_arсhive:/usr/local/tomcat/webapps
    ports:
        - "8888:8080"
    links:
        - "database:db_users"
  
  database:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
        MYSQL_ROOT_USER: root
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: db_users
    ports:
        - "3306:3306"
 
  PhpMyAdmin:
    image: adminer
    restart: always
    ports:
        - "8181:8080"
    links:
        - database:mysql

В этом файле для доступа сервиса с приложением authorizationService к БД создал ссылку:

links:
        - "database:db_users"

Теперь для подключения к БД моя строка подключения в приложении по идее должна выглядеть вот так:

spring.datasource.url=jdbc:mysql://database:3306/db_users?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC

Но я этого сделать не могу потому что собираю war-фрхив у себя на ПК под Windows и ведь для того чтобы он нормально собрался и запустился в строке подключения должно быть mysql://localhost:3306, а не mysql://database:3306

Как при формировании образов или запуске контейнеров передать в проект Java ссылку на подключение к БД из файла Docker-compose или из Dockerfile?


Ответы (1 шт):

Автор решения: Exploding Kitten

Возможно, так:

services:
  authorizationService:
    #...
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://database:3306/db_users?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC
→ Ссылка