Home Ec2+docker+mysql
Post
Cancel

Ec2+docker+mysql

๊ด€๋ จ ๊ธ€


์Šคํ„ฐ๋”” - ๋ฐฐํฌ ๊ณผ์ • ์ •๋ฆฌ


EC2 + Docker + MySQL

ec2 ์ƒ์„ฑํ•˜๊ธฐ

point

  • ubuntu ํด๋ฆญ
  • ์ŠคํŒŸ ์ธ์Šคํ„ด์Šค ํด๋ฆญ

image


image



Spot Instance

์ธ์Šคํ„ด์Šค๋Š” AWS์˜ ์—ฌ์œ  ๋ฆฌ์†Œ์Šค ๋˜๋Š” EC2 ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ œ๊ณต๋œ๋‹ค.

์ด๋Ÿฌํ•œ ์ธ์Šคํ„ด์Šค๋Š” ๊ฒฝ๋งค ๋ฐฉ์‹์œผ๋กœ ๊ฐ€๊ฒฉ์ด ๊ฒฐ์ •๋˜๋ฉฐ, ํ˜„์žฌ์˜ ์ˆ˜์š”์™€ ๊ณต๊ธ‰ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ€๊ฒฉ์ด ๋ณ€๋™ํ•œ๋‹ค.

Spot ์ธ์Šคํ„ด์Šค๋Š” ๋น„๊ต์  ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๊ฒฉ์€ ๋ณ€๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ค‘๋‹จ๋  ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ „์— ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค.

Spot ์ธ์Šคํ„ด์Šค๋Š” ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ์ง€์†์ ์ธ ์ž‘์—…์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

Spot ์ธ์Šคํ„ด์Šค๋Š” ๋น„์šฉ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ž„์‹œ์ ์ธ ๋ฆฌ์†Œ์Šค๋กœ ์ œ๊ณต๋˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ์ค‘๋‹จ์— ๋Œ€๋น„ํ•˜๊ณ  ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.




์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐํ•˜๊ธฐ

{ํ‚ค ํŽ˜์–ด ์ด๋ฆ„}.pem์„ ์ €์žฅํ•œ ์œ„์น˜๋กœ ๊ฒฝ๋กœ๋ฅผ ์ด๋™์‹œํ‚จ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

๋‚˜๋Š” Linux ์ „์šฉ ํด๋”์— ๋„ฃ์–ด๋’€๋‹ค.


keypair ํŒŒ์ผ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝ

1
$ chmod 400 {ํ‚ค ํŽ˜์–ด ์ด๋ฆ„}.pem

ubuntu์—์„œ๋Š” chmod ์ „์— sudo๋ฅผ ์ ์–ด์ค˜์•ผ ์‹คํ–‰์ด ๋˜์—ˆ๋‹ค. (sudo chmod 400 {ํ‚ค ํŽ˜์–ด ์ด๋ฆ„}.pem)

chmod๋Š” ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด์ด๋ฉฐ, 400์€ ๊ถŒํ•œ ์„ค์ •์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

400์€ ํ•ด๋‹น ํŒŒ์ผ์„ ์†Œ์œ ํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ๊ธฐ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜๊ณ , ๊ทธ ์™ธ์˜ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด์„œ๋Š” ๊ถŒํ•œ์„ ์ œํ•œํ•˜๋Š” ์„ค์ •์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ AWS์—์„œ๋Š” EC2 ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” keypair ํŒŒ์ผ์„ 400์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.



SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Amazon EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†

1
$ ssh -i {ํ‚ค ํŽ˜์–ด ์ฃผ์†Œ} ubuntu@ipv4์ฃผ์†Œ

๋‚˜๋Š” ํ‚คํŽ˜์–ด ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ํ‚คํŽ˜์–ด ์ด๋ฆ„๋งŒ ์ž‘์„ฑํ•ด์•ผ ์‹คํ–‰์ด ๋˜์—ˆ๋‹ค. ex) sudo ssh -i chat.pem ubuntu@{ipv4์ฃผ์†Œ}

-i {ํ‚ค ํŽ˜์–ด ์ฃผ์†Œ}๋Š” ์ ‘์†์— ์‚ฌ์šฉํ•  ๊ฐœ์ธ ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

ํ•ด๋‹น ๊ฐœ์ธ ํ‚ค๋Š” ํ‚ค ํŽ˜์–ด ์ƒ์„ฑ ์‹œ์— ๋‹ค์šด๋กœ๋“œํ•œ .pem ํŒŒ์ผ์ด์–ด์•ผ ํ•œ๋‹ค.

ubuntu@IPv4์ฃผ์†Œ๋Š” SSH๋กœ ์ ‘์†ํ•  EC2 ์ธ์Šคํ„ด์Šค์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ IPv4 ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

์—ฌ๊ธฐ์„œ ubuntu๋Š” EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•  ์‚ฌ์šฉ์ž ๊ณ„์ •์ด๋ฉฐ, IPv4์ฃผ์†Œ๋Š” EC2 ์ธ์Šคํ„ด์Šค์˜ ๊ณต๊ฐœ IPv4 ์ฃผ์†Œ์ด๋‹ค.

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฐœ์ธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSH ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๊ณ , ์ง€์ •ํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ EC2 ์ธ์Šคํ„ด์Šค์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ดํ›„์—๋Š” SSH ์„ธ์…˜ ๋‚ด์—์„œ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ์–ดํ•˜๊ณ  ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.



SSH๋ž€?

SSH(Secure Shell)๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์›๊ฒฉ์œผ๋กœ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜๊ณ  ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

SSH๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์›๊ฒฉ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

SSH๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 22๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Amazon EC2์—์„œ๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ SSH ์ ‘์†์„ ์œ„ํ•ด 22๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณด์•ˆ ๊ทธ๋ฃน(Security Group)์ด๋ผ๋Š” ์„ค์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณด์•ˆ ๊ทธ๋ฃน์€ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ดํ•˜๋Š” ๊ฐ€์ƒ ๋ฐฉํ™”๋ฒฝ ์—ญํ• ์„ ํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ SSH ์ ‘์†์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์•ˆ ๊ทธ๋ฃน ๊ตฌ์„ฑ์— 22๋ฒˆ ํฌํŠธ๋ฅผ ๊ฐœ๋ฐฉํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ SSH ํด๋ผ์ด์–ธํŠธ์—์„œ 22๋ฒˆ ํฌํŠธ๋ฅผ ๋ชฉ์ ์ง€ ํฌํŠธ๋กœ ์ง€์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ง€์ •๋œ ํฌํŠธ๋ฅผ ํ†ตํ•ด SSH ์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ๋˜์–ด EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.



๋งŒ์•ฝ 22๋ฒˆ ํฌํŠธ๊ฐ€ ์•„๋‹Œ 500๊ฐ™์ด ๋‹ค๋ฅธ ๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ–ˆ๋‹ค๋ฉด?

--port ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ์ ์ง€ ํฌํŠธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

1
ssh -i {ํ‚ค ํŽ˜์–ด ์ฃผ์†Œ} -p 500 ubuntu@ipv4์ฃผ์†Œ

-p 500์€ SSH ์ ‘์† ์‹œ ๋ชฉ์ ์ง€ ํฌํŠธ๋ฅผ 500์œผ๋กœ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋Š” EC2 ์ธ์Šคํ„ด์Šค์˜ ํฌํŠธ ๋ฒˆํ˜ธ์— ๋งž๊ฒŒ -p ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ์ ์ง€ ํฌํŠธ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.





Docker ์„ค์น˜ํ•˜๊ธฐ

Docker docs


apt ์ €์žฅ์†Œ ์‚ฌ์šฉ

HTTPS๋ฅผ ํ†ตํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง€ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธ aptํ•˜๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜

1
2
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg


Docker์˜ ๊ณต์‹ GPG ํ‚ค๋ฅผ ์ถ”๊ฐ€

1
2
3
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg


repository ์„ค์ •

1
2
3
4
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null




docker engine ์„ค์น˜

package update

1
sudo apt-get update


Docker Engine, containerd ๋ฐ Docker Compose๋ฅผ ์„ค์น˜(์ตœ์‹  ๋ฒ„์ „)

1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


ํ™•์ธํ•˜๊ธฐ

1
sudo docker -v





MySql ์„ค์น˜ํ•˜๊ธฐ

Docker hub


MySQL ์ธ์Šคํ„ด์Šค ์‹œ์ž‘

1
$ docker run --name ${some-mysql} -e MYSQL_ROOT_PASSWORD=${my-secret-pw} -d mysql:tag

some-mysql๋Š” ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•˜๋ ค๋Š” ์ด๋ฆ„, my-secret-pw๋Š” MySQL ๋ฃจํŠธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์„ค์ •ํ•  ๋น„๋ฐ€๋ฒˆํ˜ธ,

tag๋Š” ์›ํ•˜๋Š” MySQL ๋ฒ„์ „์„ ์ง€์ •ํ•˜๋Š” ํƒœ๊ทธ


โ†’ ex) docker run -p 3306:3306 --name chat -e MYSQL_ROOT_PASSWORD=1234 -d mysql:latest

์•ž์˜ 3306 port๋Š” ec2 port์ด๊ณ , ๋’ค์˜ 3306์€ container port์ด๋‹ค.


ex) docker run -p 1111:2222 --name hello -e MYSQL_ROOT_PASSWORD=1234 -d mysql:latest

  • -p 1111:2222: ํ˜ธ์ŠคํŠธ์˜ 1111 ํฌํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ 2222 ํฌํŠธ์™€ ์—ฐ๊ฒฐํ•œ๋‹ค. ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํฌํŠธ ๋งคํ•‘์„ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

  • --name hello: ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ โ€œhelloโ€๋กœ ์ง€์ •ํ•œ๋‹ค.

  • -e MYSQL_ROOT_PASSWORD=1234: ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” MySQL ์„œ๋ฒ„์˜ ๋ฃจํŠธ ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ โ€œ1234โ€๋กœ ์„ค์ •ํ•œ๋‹ค.
    ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

  • -d: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉด ์ฝ˜์†”์— ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • mysql:latest : ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” โ€œmysqlโ€ ์ด๋ฏธ์ง€์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•œ๋‹ค.


๋”ฐ๋ผ์„œ ์ด ๋ช…๋ น์–ด๋Š” ํ˜ธ์ŠคํŠธ์˜ 1111 ํฌํŠธ๋ฅผ MySQL ์ปจํ…Œ์ด๋„ˆ์˜ 2222 ํฌํŠธ์™€ ์—ฐ๊ฒฐํ•˜๊ณ , โ€œhelloโ€๋ผ๋Š” ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ,

MySQL ์„œ๋ฒ„์˜ ๋ฃจํŠธ ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ โ€œ1234โ€๋กœ ์„ค์ •ํ•˜์—ฌ MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.



1111์€ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 2222๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ MySQL ์„œ๋น„์Šค๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰๋˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์ด๋‹ค.

-p ์˜ต์…˜์€ ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํฌํŠธ ๋งคํ•‘์„ ์„ค์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์ฆ‰, ์œ„์˜ ์˜ˆ์‹œ์—์„œ 1111 ํฌํŠธ๋กœ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜๋ฉด, ํ•ด๋‹น ์š”์ฒญ์€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ 2222 ํฌํŠธ๋กœ ์ „๋‹ฌ๋˜์–ด MySQL ์„œ๋น„์Šค์— ๋„๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์—์„œ MySQL ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๋‚˜ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ,

์ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€์—์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ์„œ๋น„์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.




Port Forwarding(ํฌํŠธ ํฌ์›Œ๋”ฉ)?

ํฌํŠธ ํฌ์›Œ๋”ฉ(Port Forwarding)์€ ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋กœ,

์ปดํ“จํ„ฐ์˜ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ํ•œ ํฌํŠธ์—์„œ ๋‹ค๋ฅธ ํฌํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์˜ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํฌํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๊ฐ ํฌํŠธ๋Š” ํŠน์ • ํ”„๋กœํ† ์ฝœ(์˜ˆ: HTTP, SSH, FTP)์ด๋‚˜ ์„œ๋น„์Šค(์˜ˆ: ์›น ์„œ๋ฒ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.

ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ์™ธ๋ถ€์—์„œ ์ปดํ“จํ„ฐ์˜ ํŠน์ • ํฌํŠธ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด

์ด๋ฅผ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ๋‹ค๋ฅธ ํฌํŠธ๋กœ ์ „๋‹ฌํ•˜์—ฌ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์„œ๋ฒ„๊ฐ€ 80๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๋กœ์ปฌ ์ปดํ“จํ„ฐ์˜ 8080๋ฒˆ ํฌํŠธ๋ฅผ ์™ธ๋ถ€๋กœ ์—ด์–ด๋‘์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณธ๋‹ค.

์ด ๋•Œ ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ์„ค์ •ํ•˜๋ฉด ์™ธ๋ถ€์—์„œ 8080๋ฒˆ ํฌํŠธ๋กœ ์ ‘์†ํ•œ ์š”์ฒญ์ด ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์˜ ์›น ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋˜์–ด ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

ํฌํŠธ ํฌ์›Œ๋”ฉ์€ ์ฃผ๋กœ ์ปดํ“จํ„ฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์— ์žˆ๋Š” ๋ฐฉํ™”๋ฒฝ ๋˜๋Š” ๋ผ์šฐํ„ฐ์—์„œ ์„ค์ •๋˜๋ฉฐ,

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์˜ ์„œ๋น„์Šค๋ฅผ ์™ธ๋ถ€๋กœ ๊ณต๊ฐœํ•˜๊ฑฐ๋‚˜ ์›๊ฒฉ์œผ๋กœ ์ ‘๊ทผํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.




MySql์„ ์„ค์น˜ํ–ˆ์œผ๋‹ˆ project์— db๋ฅผ ์—ฐ๊ฒฐํ•ด๋ณธ๋‹ค.

ec2์˜ Ipv4 ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

image

user์™€ password๋Š” MySql ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ค์ •ํ•œ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.





edit Configuration

image

edit Confguration์„ ๋ˆŒ๋Ÿฌ์„œ ์ƒˆ๋กœ Spring Boot๋ฅผ ๋งŒ๋“ค๊ณ  ๊ธฐ์กด project์— ๋งž๊ฒŒ ์„ค์ • ํ›„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

โ˜‘๏ธ edit Configuration์—์„œ Active profiles์— ์ž‘์„ฑํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ Environment variables์— ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋„ฃ๋Š” ๊ฒƒ!

jdbc:mysql://{EC2๊ณต๊ฐœ์ฃผ์†Œ}:{host port}/์Šคํ‚ค๋งˆ ์ด๋ฆ„

์œ„์—์„œ MySQL์„ ์„ค์น˜ํ•  ๋•Œ docker run -p 3306:3306 --name chat -e MYSQL_ROOT_PASSWORD=1234 -d mysql:latest๋กœ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—

3306์œผ๋กœ ์„ค์น˜ํ–ˆ๊ณ  chat์„ ์ž…๋ ฅํ•œ ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ์— EC2 public IP ์ฃผ์†Œ๊ฐ€ 1.2.3.4์ด๊ณ  host port๊ฐ€ 1111๋กœ ๋งคํ•‘๋˜์–ด ์žˆ๋‹ค๋ฉด, SPRING_DATASOURCE_URL์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค

jdbc:mysql://1.2.3.4:1111/์Šคํ‚ค๋งˆ์ด๋ฆ„





์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ์„ค์ •

image

MySQL์„ ์ ์šฉํ–ˆ์œผ๋‹ˆ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์— MySQL์„ ๋„ฃ์–ด์ค€๋‹ค.



๋ณด์•ˆ

๋ณด์•ˆ์ ์œผ๋กœ ๋ชจ๋“  IP๋ฅผ ํ—ˆ์šฉํ•ด๋ฒ„๋ฆฌ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— DB๋Š” ๋‚ด IP๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค์ •ํ•ด์ค€๋‹ค.

image



์Šคํ‚ค๋งˆ(chat) ์ƒ์„ฑ ํ›„ run ์„ ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

image



application.properties์— spring.jpa.hibernate.ddl-auto=create ์†์„ฑ์„ ๋„ฃ์–ด์ฃผ๋ฉด ์‹คํ–‰๊ณผ ๋™์‹œ์— ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.




reference
[AWS, Docker] aws ec2 instance์— docker, mysql ์„ค์น˜ํ•˜๊ธฐ

This post is licensed under CC BY 4.0 by the author.

Jmh

Cicd ์ˆ˜๋™