개발 무지렁이

[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바 + DB) 및 로컬PC환경, 운영서버 환경에서 DB연결정보 설정하기 본문

Backend/Docker

[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바 + DB) 및 로컬PC환경, 운영서버 환경에서 DB연결정보 설정하기

Gaejirang-e 2023. 7. 11. 02:02

🌝. 로컬PC환경
DEV
TEST

🌚. 운영서버환경
TEST
PROD

        로컬PC환경에서나 운영서버환경에서나 TEST DB연결정보는 똑같아야 한다

       🌱. 스프링부트 앱 + 🪛. DB 연결 정보

⛑️. 로컬pc에서의 DB 사전작업

XAMPP -> shell
mysql -u root

#어디서든 접근가능, 노출되면 x
GRANT ALL PRIVILEGES ON *.* TO woo@`%` IDENTIFIED BY '1234';

#내 PC에서만 접근 가능
GRANT ALL PRIVILEGES ON *.* TO woolocal@127.0.0.1 IDENTIFIED BY '1234';

#내 도커 호스트에서만 접근 가능
GRANT ALL PRIVILEGES ON *.* TO woolocal@172.17.0.1 IDENTIFIED BY '1234'; 

172.17.0.1: 도커 호스트를 말한다 (도커🐋를 설치하면 기본적으로 생긴다)
(⚠️ 컨테이너 각각은 172.17.0.2, 172.17.0.3 ... 이런 IP를 가지게 된다.)
(⚠️ 도커 내부에서 127.0.0.1은 컨테이너 자신을 가리키게 된다.)

🙉. 사용자 확인
select user, host from mysql.user;
🙉❌. 사용자 삭제
DROP USER woolocal@127.0.0.1;

#🐬 SQL yog로 연결
CREATE DATABASE app20230706;
CREATE DATABASE app20230706__test;

SHOW DATABASES;

[application.yml]

  spring:
      profiles:
          active: dev
  datasource: #공통 소스는 application.yml에
      driver-class-name: org.mariadb.jdbc.Driver

(개발용 ⌨️)[application-dev.yml]

  server:
      port:8020
  spring:
      devtools:
          livereload:
              enabled: true
          restart:
              enabled: true
      datasource:
          url: jdbc:mariadb://127.0.0.1:3307/app20230706?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul
          username: root
          password:
      jpa:
          hibernate:
              ddl-auto: create

(배포용 🎲)[application-prod.yml]

  spring:
      datasource:
          url: jdbc:mariadb://172.17.0.1:3307/app20230706?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul
          username: woo
          password: 1234
      jpa:
          hibernate:
              ddl-auto: none

(샘플데이터용 🎃)[application-test.yml]

  spring:
      datasource:
          url: jdbc:mariadb://127.0.0.1:3307/app20230706__test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul
          username: woolocal
          password: 1234
      jpa:
          hibernate:
              ddl-auto: none

Tistory's Card

🌱. 운영서버 내 스프링부트 앱 가져오기

mkdir -p /docker_projects/sbdb_1/project
cd /docker_projects/sbdb_1/project
git clone [GitHub Repository 주소] .
chmod 744 gradlew
./gradlew clean build

FAILED(실패: DB연결정보 미스매치)

WHY
운영서버에는
[DB연결정보(DB-server, 사용자, 비밀번호, ETC)]가 세팅되어 있지 않다.
운영서버에서는
로컬PC에서처럼 ⛑️사전작업을 해주지 않았다




⛑️. 운영서버에서 DB 사전작업 해주기

#mariadb 설치
sudo yum install mariadb-server -y
sudo systemctl start mariadb

sudo vim /etc/my.cnf.d/mariadb-server.cnf
character-set-server=utf8mb4 # 추가
collation-server=utf8mb4_unicode_ci # 추가
skip-character-set-client-handshake # 추가

sudo systemctl restart mariadb

sudo /usr/bin/mariadb-secure-installation #root 비밀번호 설정

mysql -u roo -p1234

GRANT ALL PRIVILEGES ON *.* TO woo@`%` IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO woolocal@127.0.0.1 IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO woolocal@172.17.0.1 IDENTIFIED BY '1234';

⭐. mysql에 유저는 복합키이다.(이름 + 발신지주소),
woolocal@127.0.0.1woolocal@172.17.0.1은 다른 USER이다.


Comments