Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바 + DB) 및 로컬PC환경, 운영서버 환경에서 DB연결정보 설정하기 본문
Backend/Docker
[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바 + DB) 및 로컬PC환경, 운영서버 환경에서 DB연결정보 설정하기
Gaejirang-e 2023. 7. 11. 02:02
🌝. 로컬PC환경
DEV
TEST
DEV
TEST
🌚. 운영서버환경
TEST
PROD
TEST
PROD
로컬PC환경에서나 운영서버환경에서나 TEST DB연결정보는 똑같아야 한다
🌱. 스프링부트 앱 + 🪛. DB 연결 정보
⛑️. 로컬pc에서의 DB 사전작업
XAMPP -> shell
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
🌱. 운영서버 내 스프링부트 앱 가져오기
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.1과 woolocal@172.17.0.1은 다른 USER이다.
'Backend > Docker' 카테고리의 다른 글
[Docker] attached mode default인 docker run, detached mode default인 docker start (0) | 2023.11.05 |
---|---|
[Docker] 도커허브(DockerHub)에서 공식 베이스 이미지를 가져와 자체 이미지 구축(in Dockerfile) (0) | 2023.11.04 |
[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바) 및 운영서버에서 실행 (0) | 2023.07.06 |
[Docker] 범용 이미지를 개조하여 my 이미지 제작 (0) | 2023.07.04 |
[Docker] Volume(볼륨), host os 폴더와 docker container 폴더의 매핑 (0) | 2023.07.03 |
Comments