Spring

내 애플리케이션이 Spring의 로컬 MySQL이 아닌 Docker 컨테이너 MySQL을 사용할 수 있도록 application.properties 파일에서 환경 변수를 지정하는 방법은 무엇입니까?

기록만이살길 2021. 3. 16. 08:03
반응형

내 애플리케이션이 Spring의 로컬 MySQL이 아닌 Docker 컨테이너 MySQL을 사용할 수 있도록 application.properties 파일에서 환경 변수를 지정하는 방법은 무엇입니까?

1. 질문(문제점):

저는 Dockers를 처음 사용합니다. 스프링 애플리케이션이 컨테이너에서 MySQL db에 액세스하기를 원하지만 Docker MySQL에 포함 된 MySQL db를 사용할 수 있도록 docker-compose 파일 및 application.properties 파일에 환경 변수를 추가하는 방법을 모르겠습니다. image. 그러나 이것이 Spring 부팅이 아닌 Spring 응용 프로그램인지 확인하십시오.

아래는 내가 쓰려고 한 도커 작성 파일입니다.

 version: '3'
services:
  mysql-standalone:
    image: 'mysql:5.7'
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
      - MYSQL_DATABASE=CTH
    ports:
      - "3307:3306"
  cth-docker-container:
    image: cth-docker-container
    ports:
      - "8082:8082"
    environment:
      CTH_MYSQL_DATABASENAME: CTH
      CTH_MYSQL_SERVERNAME: mysql-standalone
      CTH_MYSQL_USERNAME: root
      CTH_MYSQL_PASSWORD: root

      CTH_CHAT_MYSQL_DATABASENAME: CTH_CHAT
      CTH_CHAT_MYSQL_SERVERNAME: mysql-standalone
      CTH_CHAT_MYSQL_USERNAME: root
      CTH_CHAT_MYSQL_PASSWORD: root
    build:
      context: "./"
      dockerfile: "Dockerfile"
    depends_on:
      - mysql-standalone

및 db 속성이있는 application.properties 파일

dbuser.local=root
dbpassword.local=root
dbdatabaseName.local=CTH
dbserverName.local=localhost
dbportNumber.local=3306

환경 변수를 만드는 방법을 모르기 때문에 내 응용 프로그램이 MySQL 독립 실행 형 이미지 내에있는 MySQL db를 사용하는 방법을 알고 있습니다.

2. 해결방안:

마지막으로, docker-compose 파일의 데이터를 소비하고 내 애플리케이션이 로컬에서 실행될 때 값을 제공 할 수있는 application.properties 파일에서 환경 변수를 만드는 방법을 찾았습니다.

key.name=${value_consuming_from_docke_compose_file:i_can_give_value_when_application_is running_locally}

이것이 방법이지만 누군가 다른 시나리오에 갇힌 다른 방법을 얻으려면 여기에 답변을 찾아 게시하십시오.

감사!

65576099
반응형