์ค์ต #2
1. AWS EC2 ์์ฑ
- ์ฒซ๋ฒ์งธ๋ก ํ์ฌ CD๋ฅผ ํตํด Spring์ ๊ตฌ๋ํ AWS EC2๊ฐ ์์ง ์์ผ๋ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ค๋ค.
- ํคํ์ด๋ ์์ด ์งํ.
- ์ด์ ์ ๋ง๋ค์๋ VPC๋ก ์งํํ ์์ (https://1000sang-dev.tistory.com/64)
- ํผ๋ธ๋ฆญ IP ์๋ ํ์ฑํ ์ค์
- ๋ณด์ ๊ทธ๋ฃน์ ๊ฒฝ์ฐ ๊ธฐ์กด 22๋ฒ ํฌํธ ์ธ์ "8080 ํฌํธ์ ๋ชจ๋ IP" ์ธ๋ฐ์ด๋ ๊ท์น์ ์ถ๊ฐํด์ค์ผํ๋ค.
- ์ฌ์ฉ์ ์ง์ TCP ํฌํธ 8080 ์ ๋ ฅ → ์์น ๋ฌด๊ด(๋ชจ๋ IP) ์ถ๊ฐ
- EC2 ์ฐ๊ฒฐ ํ์ธ
- ์๋ ์ด๋ฏธ์ง๋ฅผ ํตํด EC2 ์ธ์คํด์ค ์ฐ๊ฒฐ์ ํตํด ์ ์์ ์ฑ๊ณตํ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๐
2. ์์ฑํ AWS EC2 ๋ด Docker ์ค์น
- ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ์คํํ๋ ๊ฒ์ Docker Daemon(Docker Engine)์ด๋ค.
- ์ง๊ธ ์์ฑ ๋ AWS EC2๋ ๋ฌด์๋ ์ค์น๋์ด์์ง ์๊ธฐ๋๋ฌธ์ ํด๋น EC2์ Docker๋ฅผ ์ค์นํด์ผํ๋ค.
1. EC2 ๋ด ์ธ์คํด์ค์ ์๋ ๋ชจ๋ ํจํค์ง ์ ๋ฐ์ดํธ.
sudo yum update -y
2. EC2 ์ธ์คํด์ค ๋ด Docker Engine ์ค์น
sudo yum install docker -y
3. ์ค์น๋ฅผ ๋ชจ๋ ์๋ฃํ๋ค๋ฉด, Docker Engine์ ๊ตฌ๋ํ๋ค.
sudo service docker start
3. EC2 ์ธ์คํด์ค ๋ด Docker Hub์ ๋ก๊ทธ์ธ ํ Docker Image๋ฅผ Pull ๋ฐ๊ธฐ
Pull: Docker Image ๋ค์ด๋ก๋ ← Docker Registry(๋์ปค ์ ์ฅ์)
1. Docker hub์์ Docker Image๋ฅผ ๋ค์ด๋ก๋ ํด์ผํ๊ธฐ ๋๋ฌธ์ Docker Hub์ ๋ก๊ทธ์ธํ๋ค.
- username๊ณผ password๋ https://1000sang-dev.tistory.com/68 ํด๋น ํฌ์คํ ์์ Github Repository์ ์ค์ ํ ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค.
docker login
2. ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ Docker Hub์์ Dcoker Image๋ฅผ ๋ค์ด๋ก๋ํ๋ค. (Pull)
docker pull sanghyune/github-actions-demo
- ํด๋น ์ด๋ฏธ์ง ์ฒ๋ผ permission denied๋ก ์คํจํ ๊ฒฝ์ฐ, ๊ถํ์ ์ค์ ํด์ฃผ์ด์ผ ํ๋ค.
sudo chmod 666 / var/run/docker.sock
- ๋ค์ ๋ก๊ทธ์ธ ํ, `docker pull` ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ์ฑ๊ณตํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
3. Docker Image๋ฅผ ์ฑ๊ณต์ ์ผ๋ก Pull ๋ฐ์๋์ง ํ์ธํ๊ธฐ
docker images
4. Docker Hub์์ ๋ฐ์ Docker Image ๊ตฌ๋ ํ Docker Containger ํ์ธ
Run: Docker Image ์คํ = Container
1. ๋ก๊ทธ์ธ ์๋ฃํ Docker Hub์์ Docker Image ๋ค์ด๋ก๋(Pull)๋ฅผ ์๋ฃํ๋ค๋ฉด Docker Image๋ฅผ ๊ตฌ๋ํ๋ค.
docker run -p 8080:8080 sanghyune/github-actions-demo
- `-d` ์ต์
์ ์ถ๊ฐํ๋ฉด EC2์ ์ ์ํ ์ ์ ์์ ์ฐ๊ฒฐ์ด ๋๊ธฐ๋๋ผ๋, EC2 ๋ด ์๋ฒ๋ ๊ณ์ ๊ตฌ๋ ๋๋ค.
- `-d`๋ detached์ ์ค์๋ง๋ก์จ, docker run -d <์ด๋ฏธ์ง> ๋ช ๋ น์ด์์ -d ์ต์ ์ detached mode๋ก ์คํํ๋ผ๋ ์๋ฏธ๋ก, ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๊ฒ ํ๋ค. ๋ฐ๋ผ์ `-d` → ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ
2. Docker Container ๊ตฌ๋ ๋ฐ ์๋ฒํ์ธ
- ํฌ๋กฌ๊ณผ ๊ฐ์ ์น ๋ธ๋ผ์ฐ์ ๋ก `{EC2 ํผ๋ธ๋ฆญIP}:8080`์ผ๋ก ์ ์ ์๋ ์ ์ฑ๊ณตํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ ๊ฒํด์ AWS EC2๋ฅผ ์์ฑ ํ ํ ๋ด๋ถ๋ก ์ ์ํ์ฌ CI๋ก ๋ง๋ Docker Image ๊น์ง ์คํํด๋ณด์๋ค.
์ฌ๊ธฐ๊น์ง๋ ๋งค๋ฒ ๋ฐฐํฌ ํ ๋๋ง๋ค Github Action์ด ๋น๋๋ฅผ ๋ง์น๊ณ ๋ด Docker Hub์ Docker ์ด๋ฏธ์ง๋ฅผ Push ํ ๋ค ๊ฐ๋ฐ์๊ฐ EC2์ ์ง์ ์ ์ํ์ฌ ์๋์ผ๋ก ํด๋น ์ด๋ฏธ์ง๋ฅผ Pull ๋ฐ์ ์คํ์์ผ์ผํ๋ค.
๋ค์ ํฌ์คํ ์์๋ Github Action์ผ๋ก CI + CD๋ฅผ ๋ชจ๋ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ์์ ๊ณผ์ ์ ํฌ์คํ ํ ์์ ์ด๋ค.
โน๏ธ ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
'๐ปDEV-STUDY > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Dockerize #2 (5) | 2024.11.01 |
---|---|
[Docker] Dockerize #1 (0) | 2024.11.01 |
[Github Action & Docker]์๋: Github Action์ผ๋ก CI / CD ๋ชจ๋ ์๋ ์ฒ๋ฆฌ #3 (4) | 2024.10.29 |
[GitHub Action & Docker] ์๋: Github Action์ผ๋ก CI + ๊ฐ๋ฐ์๊ฐ ์ง์ CD #1 (3) | 2024.10.29 |
[Github Action & Docker] CI / CD ๋ฐฐํฌ (4) | 2024.10.28 |