Docker Compose : ๋ ๊ฐ ์ด์์ ๋์ปค ์ด๋ฏธ์ง ๋น๋ / ์ปจํ
์ด๋ ๊ตฌ๋Docker Compose๋ชฉ์ : Docker Compose๋ฅผ ํตํ Spring Boot + Database(MySQL) ๋์ ๊ตฌ๋์ด๋ฒ ์ฑํฐ์์ Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์งํํ๋ Spring Boot ์ ํ๋ฆฌ์ผ์ด์
๊ณผ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋์์ ๊ตฌ๋ํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ทธ ๊ณผ์ ์ ๋ํด ์์๋ณด์. Docker Compose๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ Docker ์ปจํ
์ด๋๋ฅผ ์์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค. DockerFile: ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
(์ด๋ฏธ์ง)์ ์ ์ํ๊ณ ๋น๋ํ ๋ ์ฌ์ฉํ๋ค.Docker Compose: ๋ ์ด์์ ์ ํ๋ฆฌ์ผ์ด์
(์ด๋ฏธ์ง)์ ์ ์ํ๊ณ ํจ๊ป ์คํํ ๋ ์ฌ์ฉํ๋ค. ๊ฐ ์ปจํ
์ด๋ ๊ฐ์ ๋คํธ์ํฌ ์ค์ ๋ฐ ํ๊ฒฝ ๋ณ์ ์ค์ ์ ์ฝ..
๐ปDEV-STUDY/Docker
Docker๋ฅผ ํตํ Database ๊ตฌ๋Database: ์ฌ์ฉํ๋ ค๋ DB์ Base Docker Image ๊ธฐ๋ฐ์ ์ถ๊ฐ ์ค์ ๋ชฉ์ : Docker๋ฅผ ํตํ Database(MySql) ๊ตฌ๋ ← docker ๋ช
๋ น์ด ์ฌ์ฉ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ๋์ Dockerfile ํตํ ์ด๋ฏธ์ง ์์ฑ ์์ด, ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ก ๋ฐ๋ก ๊ตฌ๋ํ๋ค.1. MySQL ๋์ปค ๊ตฌ๋์๋ ๋ช
๋ น์ด๋ฅผ ํตํด ๋ฐ๋ก ๊ตฌ๋์ด ๊ฐ๋ฅํ๋ค์ฃผ์: ๋์ปค ๋ด ํฌํธ๋ 3306์ด์ง๋ง, ๋ก์ปฌ ๋
ธ์ถ ํฌํธ๋ 33066docker run --name mysql-container \-e MYSQL_ROOT_PASSWORD=root \-e MYSQL_USER=asac \-e MYSQL_PASSWORD=1234 \-e MYSQL_DATABASE=example \-p 33066:3306 -d my..
๊ฐ๋ฐํ๊ฒฝ๊ณผ ๋ฐฐํฌํ๊ฒฝ์ ๋ถ๋ฆฌ, ์ผ๊ด๋ ์คํ ํ๊ฒฝWhy Use to Docker?๋์ปค๋ผ์ด์ฆ๋ฅผ ์ ์ฉํ๊ธฐ์ ์์, Docker๋ฅผ ์ฌ์ฉํ๋ ๊ทผ๋ณธ์ ์ธ ์ด์ ์ ๋ํด ์์๋ณด์.๊ฒฉ๋ฆฌ(Isolation): ๋ก์ปฌ(์ธ์คํด์ค)์ ํ๊ฒฝ๊ณผ ๋ถ๋ฆฌ๋ ๋์ปค ํ๊ฒฝ์ผ๋ก ๋ก์ปฌ ํ๊ฒฝ์ ์ค์ผ์ด๋ ์ถฉ๋์ ๋ฐฉ์งํ๋ค.์ผ๊ด์ฑ(Consistency): ๋ค์ํ ๋ก์ปฌ(์ธ์คํด์ค)์์๋ ๋์ปค๋ฅผ ํตํด ์ผ๊ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ๋ํ ์ ์๋ค.Docker๊ฐ ์์ ๋:๋ก์ปฌ(์ธ์คํด์ค) ํ๊ฒฝ๊ณผ App ๊ตฌ๋์ ์ํ ํ๊ฒฝ์ด ์ถฉ๋ํ๊ณ ์ด๋ฆฌ์ ๋ฆฌ ์์ธ๋ค.๋ฌธ์ ์ : ๊ฐ ๊ฐ๋ฐ์์ ๋ก์ปฌํ๊ฒฝ์ด ์๋ก ๋ฌ๋ผ, ์ผ๊ด๋ ํ๊ฒฝ ๊ตฌ์ฑ์ด ์ด๋ ต๋ค.Aaron: Window OS์์ MySQL 5.7, JVM 17, 16, 12Baron: Linux OS์์ MySQL 8, JVM 17, 8Caron: Ma..
์ค์ต #3์์ ํฌ์คํ
์์ ์ธ๊ธํ๋ฏ, ๋งค๋ฒ ๋ฐฐํฌ ์, GitHub Actions๊ฐ Docker Hub์ ์ด๋ฏธ์ง๋ฅผ ํธ์ํ๊ณ , ๊ฐ๋ฐ์๊ฐ EC2์ ์ง์ ์ ์ํด ์๋์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ ์คํํ๋ ๊ฒ์ ๋ฒ๊ฑฐ๋กญ๊ณ ๋นํจ์จ์ ์ด๋ค. ๋ฐ๋ผ์, Github Actions๊ฐ ์ด๋ฏธ์ง๋ฅผ Docker Hub์ ํธ์ํ ํ ์๋์ผ๋ก EC2์ ์ ์ํด ์ด๋ฏธ์ง๋ฅผ Pullํ๊ณ ์ปจํ
์ด๋๋ฅผ ์คํํ๋๋ก ์ค์ ํ๋ฉด ํจ์ฌ ๋ ์์ํ๊ณ ํธ๋ฆฌํ๊ฒ ์๋ ๋ฐฐํฌ๋ฅผ ์ํํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ํฌ์คํ
์์ ์๋์ผ๋ก ์ด๋ฏธ์ง๋ฅผ Pull, ์ปจํ
์ด๋๋ฅผ ์คํํ๋๋ก ์ค์ ํ๋ ์์
๊ณผ์ ์ ํฌ์คํ
ํ ์์ ์ด๋ค.์ด ์๋ํ ๋ฐฉ์์์๋ GitHub Actions๊ฐ EC2์ SSH๋ก ์ ๊ทผํด ๋ค์ ์์
์ ์ฒ๋ฆฌํ ์ ์๋ค.Docker Hub์์ ์ต์ ์ด๋ฏธ์ง Pull: ์๋ก์ด ์ด๋ฏธ์ง๊ฐ ์์ฑ๋..
์ค์ต #21. 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)์ด๋ค.์ง๊ธ..
์ค์ต #1 1. CI ์ฌ์ ์ค๋น: ๋ฐฐํฌํ๊ณ ์ ํ๋ Java ์ฝ๋ ์์ฑ ๋ฐ Github ์
๋ก๋โ ๏ธ ํ์๋ ์ด์ ์ ๊ณต๋ถํ๋ Spring ์ค์ต ์ฝ๋๋ฅผ Github๋ฅผ ์ด์ฉํ ์์ ์ด๋ค. 1. ๋ํดํธ ๋ธ๋์น ์ด๋ฆ์ main์ผ๋ก ๋ฐ๊พธ์ด์ค๋ค.ํ์๋ main ๋ธ๋์น๋ก ๋ฐฐํฌํ ๊ฒ์.git branch -m main 2. ์๊ฒฉ ์ ์ฅ์๋ฅผ ์์ฑํ ํ, ์๊ฒฉ ์ ์ฅ์(Github Repository)์ Push. (sanghyun-e/ci-ci-tutorial) ์๊ฒฉ ์ ์ฅ์๊ฐ ์๋ ๊ฒฝ์ฐ git remote add origin git@github.com:SangHyun-e/ci-cd-tutorial.git ์๊ฒฉ ์ ์ฅ์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐgit remote set-url origin git@github.com:SangHyun-e/ci-c..
Event, Runner, Job, Step, ActionCI / CD Tool: GitHub ActionsGitHub Actions vs Jenkins CI / CD ํด๋ก ์ ๋ช
ํ ๊ฒ์ GitHub Action๊ณผ Jenkins๊ฐ ์๋ค. Jenkins๋ ๋ณ๋์ Jenkins ์๋ฒ๋ฅผ ๋ฐ๋ก ๊ตฌ์ถํด์ผ๋๊ธฐ ๋๋ฌธ์ ๋ฌด๋ฃ ํด์ธ GitHub Action์ ์ฌ์ฉํ ์์ ์ด๋ค. Why Use to GitHub Actions?CI / CD ๊ฐ์ํ: ๋ณ๋์ ์๋ฒ(Jenkins ๋ฑ)๋ฅผ ๊ตฌ์ถํ ํ์ ์์ด GitHub์์ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ค.์ํํ ํตํฉ: GitHub ์ ์ฅ์์ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๋๋์ด ์๋ํ ๋ฐ ๋ฐ๋ณต์ ์ธ ์์
์ํ์ ์ ๋ฆฌํจ.CI / CD ๊ฐ๋
CI (Continuous Integration): ์ฝ๋๊ฐ ์ง์์ ์ผ๋ก ํตํฉ๋์ด ๋น๋ ..