๐Ÿ“Œ [Docker CI/CD ์‹œ๋ฆฌ์ฆˆ 2ํŽธ] docker-compose๋กœ ํ’€์Šคํƒ ์„œ๋น„์Šค ํ†ตํ•ฉ ๋ฐฐํฌํ•˜๊ธฐ

My Pale Blue Dotยท2025๋…„ 6์›” 5์ผ
0

DOCKER

๋ชฉ๋ก ๋ณด๊ธฐ
7/8
post-thumbnail

๐Ÿ“… 2025-06-05

๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

1๏ธโƒฃ docker-compose๋ž€?

docker-compose๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜์˜ YAML ํŒŒ์ผ๋กœ ์ •์˜ํ•˜๊ณ , ํ•œ ๋ฒˆ์˜ ๋ช…๋ น์œผ๋กœ ์ผ๊ด„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” Docker ๊ณต์‹ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • ๋ณต์žกํ•œ ์„œ๋น„์Šค ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ํ†ตํ•ฉ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์„ค์ • ์ž๋™ ์ฒ˜๋ฆฌ
  • build, depends_on, volumes, environment ๋“ฑ ๋‹ค์–‘ํ•œ ์„ค์ • ๊ฐ€๋Šฅ

2๏ธโƒฃ docker-compose.yml ๊ธฐ๋ณธ ๊ตฌ์กฐ ์˜ˆ์‹œ ๋ฐ ์„ค๋ช…

docker-compose.yml ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค(FE, BE, DB, Redis, Jenkins)๋ฅผ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ ๊ตฌ์กฐ๋กœ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •์ž…๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค:

  • fn: ํ”„๋ก ํŠธ์—”๋“œ (React ๊ธฐ๋ฐ˜)
  • bn: ๋ฐฑ์—”๋“œ (Spring Boot)
  • db: MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • redis: ์บ์‹œ ์„œ๋ฒ„
  • jenkins: CI/CD ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ Jenkins ์„œ๋ฒ„
version: '3.8'

networks:
  custom-network:
    driver: bridge

services:
  fn:
    image: boogiewoong2/docker_hub_test:fn
    container_name: fn-container
    ports:
      - "3000:80"
    depends_on:
      - bn
    networks:
      - custom-network

  bn:
    image: boogiewoong2/docker_hub_test:bn
    container_name: bn-container
    ports:
      - "8090:8090"
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db-container:3306/bookdb
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 1234
      SPRING_REDIS_HOST: redis
      SERVER_PORT: 8090
    depends_on:
      db:
        condition: service_healthy
    networks:
      - custom-network

  db:
    image: boogiewoong2/docker_hub_test:db
    container_name: db-container
    ports:
      - "3330:3306"
    networks:
      custom-network:
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - db-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 1234
      MYSQL_DATABASE: bookdb
      MYSQL_USER: dbconn
      MYSQL_PASSWORD: 1234
      MYSQL_ROOT_HOST: '%'
    deploy:
      resources:
        limits:
          memory: 1024M

  redis:
    image: boogiewoong2/docker_hub_test:redis
    container_name: redis-container
    ports:
      - "6379:6379"
    networks:
      - custom-network

  jenkins:
    image: jenkins
    build:
      context: ./JENKINS
    container_name: jenkins-container
    ports:
      - "9090:8080"
      - "50000:50000"
    volumes:
      - jenkins-data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - custom-network

volumes:
  db-data:
  jenkins-data:

3๏ธโƒฃ EC2์— Docker & Compose ์„ค์น˜

  1. EC2 ์ธ์Šคํ„ด์Šค ์ ‘์† (PuTTY)
    • .ppk ํ‚ค์™€ ํผ๋ธ”๋ฆญ DNS ์ž…๋ ฅ โ†’ Open
    • ๋กœ๊ทธ์ธ: ec2-user โ†’ sudo su
  2. Docker ์„ค์น˜
sudo yum update -y
sudo yum install docker -y
systemctl restart docker
systemctl enable docker
docker -v
usermod -aG docker ec2-user
  1. docker-compose ์„ค์น˜
DOCKER_COMPOSE_VERSION="v2.27.1"
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
  -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose version

4๏ธโƒฃ docker-compose ์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. .yml ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd ~/DOCKER/05_DOCKER_COMPOSE_DEPLOY
  1. ์‹คํ–‰
docker compose up -d
  1. ์ƒํƒœ ํ™•์ธ
docker ps -a
  1. ์žฌ๋ฐฐํฌ ํ•„์š” ์‹œ
docker compose down
docker system prune -a
docker compose build --no-cache
docker compose up -d

๐Ÿ”ฅ ์ •๋ฆฌ

  • docker-compose๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ์„œ๋น„์Šค๋ฅผ ์„ ์–ธํ˜•์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์ผ๊ด„ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • EC2์— Docker์™€ Compose๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ๊ฐ€๋Šฅ
  • depends_on, healthcheck, volumes, build, environment ๋“ฑ ์„ค์ •์„ ์ ๊ทน ํ™œ์šฉํ•  ๊ฒƒ
  • Jenkins๊นŒ์ง€ ํฌํ•จํ•œ ๊ตฌ์„ฑ์œผ๋กœ CI/CD ํ†ตํ•ฉ ๊ธฐ๋ฐ˜ ๋งˆ๋ จ

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€