๋ฐ˜์‘ํ˜•

 

EC2์— mysql์„ docker๋ฅผ ์ด์šฉํ•ด์„œ ์˜ฌ๋ ค๋ณด์ž

 

 

https://hanjungyo.tistory.com/74

 

[Spring Boot] Docker๋ฅผ ์ด์šฉํ•ด EC2์— ๋ฐฐํฌํ•ด๋ณด๊ธฐ

EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ์ด์ „ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!๋กœ์ปฌ์—์„œ Docker ์„ค์ • Jar ํŒŒ์ผ ๋นŒ๋“œํ•˜๊ธฐ ๋ณดํ†ต ๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ ./graldew clean build ๋ฅผ ๋งŽ์ด ๋ดค์„ํ…๋ฐ  ์ด๋ฒˆ์—๋Š” ./gradlew clean bootJar๋ฅผ ํ†ตํ•ด Spring B

hanjungyo.tistory.com

 

EC2์— docker๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์œ„ ๋งํฌ์˜ docker ์„ค์น˜ํ•˜๊ธฐ ๋ถ€๋ถ„์„ ์ฐธ๊ณ 

 

 

EC2์— ssh๋กœ ์ ‘์†์„ ํ•˜๊ณ 

 

MySQL Docker Image ๋‹ค์šด๋กœ๋“œ

 

sudo docker pull mysql // ์ œ์ผ ์ตœ์‹  ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ

// latest๋Š” 9.0์ธ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ 8.0์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„์ „ ๋ช…์‹œ
sudo docker pull mysql:8.0

 

 

mysql docker image๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

 

 

Docker Volume ์„ค์ •

 

Docker์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ํ• ๋‹น๋œ ๋ณผ๋ฅจ(๋ฉ”๋ชจ๋ฆฌ)๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋จ

 

=> MySQL์šฉ ๋ณผ๋ฅจ์„ ๋”ฐ๋กœ Docker์— ํ• ๋‹น ํ•ด์ฃผ๊ณ , ๋งˆ์šดํŒ…์„ ํ•ด์ฃผ๋ฉด ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•  ์ˆ˜ ์žˆ์Œ

 

docker volume create mysql-volume

 

์ด๋ ‡๊ฒŒ docker volume์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ๋Š” ๋…๋ฆฝ์ ์ž„!

 

docker volume์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

 

EC2์— Docker๋ฅผ ์„ค์น˜ํ–ˆ์„ํ…๋ฐ docker Volume์„ ์ƒ์„ฑํ•˜๊ฒŒ๋˜๋ฉด ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ /var/lib/docker/volumes/ ๊ฒฝ๋กœ์— ์ €์žฅ

 

volume ์ด๋ฆ„์„ mysql-volume์œผ๋กœ ์ƒ์„ฑํ–ˆ์œผ๋ฏ€๋กœ /var/lib/docker/volumes/mysql-volume/_data/๋กœ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ (์—ฌ๊ธฐ์„œ๋Š” docker๋ฅผ ์„ค์น˜ํ•œ EC2)์˜ ํŒŒ์ผ ๊ฒฝ๋กœ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฒŒ๋จ

 

 

 

ํ•˜์ง€๋งŒ!! ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํŠน๋ณ„ํžˆ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์•ˆ์—๋งŒ ์กด์žฌํ•˜๊ฒŒ ๋จ

 

์ด๋ฅผ ์œ„ํ•ด docker run ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ 

 

-v mysql-volume:/var/lib/mysql ์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๋Š”๋ฐ

 

MySQL ์ปจํ…Œ์ด๋„ˆ์˜ /var/lib/mysql ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ 

์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” EC2์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ MySQL์ด ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž„

=> MySQL ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด์— /var/lib/mysql ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ MySQL ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ ์œ„์น˜์ž„

 

 

EC2์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ (์—ฌ๊ธฐ์„œ๋Š” mysql-volume) ์ฆ‰, /var/lib/docker/volumes/mysql-volume/_data/ ์™€ ์—ฐ๊ฒฐ๋จ!

 

์ด ์—ฐ๊ฒฐ์„ ํ†ตํ•ด, MySQL ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ /var/lib/mysql ์— ์“ฐ์—ฌ์ง„ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์‹ค์ œ๋กœ๋Š” ํ˜ธ์ŠคํŠธ(EC2)์˜ ๋ณผ๋ฅจ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜๊ฒŒ ๋จ

 

=> MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ํ˜ธ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Œ

 

๋งŒ์•ฝ MySQL ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋™์ผํ•œ ๋ณผ๋ฅจ์„ ๋‹ค์‹œ ๋งˆ์šดํŠธํ•˜์—ฌ MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์ด์ „๊ณผ ๋™์ผํ•œ /var/lib/mysql ๊ฒฝ๋กœ๋กœ ๋‹ค์‹œ ์—ฐ๊ฒฐ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์–ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ!

 

MySQL ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ & ์‹คํ–‰

 

sudo docker run --name mysql-container -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[ํŒจ์Šค์›Œ๋“œ] -d -p 3306:3306 mysql:8.0

 

'--name' : ์ƒ์„ฑ๋  ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ์ง€์ •

 

'-v' : ๋ฐ”๋กœ ์ด์ „ docker ๋ณผ๋ฅจ์—์„œ ์„ค๋ช…ํ•จ

 

'-e MYSQL_ROOT_PASSWORD=[ํŒจ์Šค์›Œ๋“œ]' : ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ MySQL์˜ ๋ฃจํŠธ ์‚ฌ์šฉ์ž(root) ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜

  

'-d' : ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ (ํ„ฐ๋ฏธ๋„ ์ ์œ  x)

 

'-p host : container' : ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ๋ฅผ ๋งคํ•‘

 

 

mysql docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ

 

 

EC2 MySQL Docker ์ปจํ…Œ์ด๋„ˆ ์ ‘์†

 

// bash๋กœ mysql ์ปจํ…Œ์ด๋„ˆ ์ ‘๊ทผ
sudo docker exec -it mysql-container bash

// ์„ค์ •ํ•œ password ์ž…๋ ฅ
mysql -u root -p

 

'-i' : ํ‘œ์ค€ ์ž…๋ ฅ์„ ํ™œ์„ฑํ™”(interactive mode)ํ•˜๋Š” ์—ญํ• 

 

=> ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปจํ…Œ์ด๋„ˆ์™€์˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์œ ์ง€ํ•จ

 

'-t' : ๊ฐ€์ƒ ํ„ฐ๋ฏธ๋„(pseudo-TTY)์„ ํ• ๋‹นํ•จ

 

=> ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ 

(์—ฌ๊ธฐ์„œ๋Š” bash ์‰˜ ์‚ฌ์šฉ)

 

DB ํ…Œ์ŠคํŠธ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ

 

MySQL Workbench ์—์„œ hostname์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜ฌ๋ฆฐ EC2์˜ ํผ๋ธ”๋ฆญ ip ์ฃผ์†Œ๋ฅผ ์ ์–ด์ฃผ๊ณ 

 

username ์€ root์— ์ด์ „์— ์„ค์ •ํ–ˆ๋˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋ฉด ๋œ๋‹ค!

 

=> ๋งŒ์•ฝ docker exec๋ฅผ ์ด์šฉํ•ด bash๋กœ MySQL ์ปจํ…Œ์ด๋„ˆ ์ ‘๊ทผํ•ด์„œ user๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  ์—ฐ๊ฒฐํ•  username์— ํ•ด๋‹น username์„ ์ ์–ด์ฃผ๋ฉด ๋จ

 

MySQL์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์ด๋‚˜ User ์ƒ์„ฑ์€ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด์ž!

EC2 ๋ณด์•ˆ ๊ทธ๋ฃน์—์„œ 3306 (MySQL) ํฌํŠธ์— ๋Œ€ํ•ด ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•จ!
๋ฐ˜์‘ํ˜•

'๐ŸŒŠ Infra > AWS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Cloud Network  (3) 2024.10.16
Cloud Basic Service  (13) 2024.10.14
Distributed System  (5) 2024.10.06
AWS EC2 ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ˜„์ƒ ํ•ด๊ฒฐ (Swap Memory)  (1) 2024.09.12
Permissions for '*.pem' are too open ์—๋Ÿฌ ํ•ด๊ฒฐ  (0) 2024.04.06