Ubuntu 서버 위에 인프라 구축하기 3단계 : docker-compose 활용

이숭늉·2024년 12월 28일
0

DevOps

목록 보기
3/19
post-thumbnail

📢 Ubuntu 서버 위에 인프라 구축하기 3단계 : docker-compose 활용

이번 글에서는 "Ubuntu 서버 위에 인프라 구축하기"의 마지막 단계인 "3단계 : docker-compose를 통해 구축하기" 과정을 진행해보겠다.

✅ 흐름

1. docker-compoes 세팅
2. docker-compose.yml 파일 작성
3. docker-compose.yml 파일을 통한 컨테이너 실행


진행 과정

1. docker-compoes 세팅

지금 내가 사용하는 우분투 서버는 이미 세팅이 된 상태이다.
다음 명령어로 설치하고 세팅하면 된다.

sudo curl -SL "https://github.com/docker/compose/releases/download/v2.30.3/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

2. docker-compose.yml 파일 작성

우선 관련 컨테이너가 존재하는지 확인하고, 존재한다면 다 삭제한다.
그리고 docker-compose.yml 파일을 작성한다. 파일의 위치는 딱히 상관없다. 나는 프로젝트 루트 디렉터리 상위 디렉터리에 생성했다.

vi docker-compose.yml

version: '3'

services:
  db:
    container_name: mysql-server
    image: mysql:latest
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: app
      MYSQL_USER: app
      MYSQL_PASSWORD: app
    networks:
      - app-network
    healthcheck:
      test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root --password=$$MYSQL_ROOT_PASSWORD']
      interval: 10s
      timeout: 2s
      retries: 100

  backend:
    container_name: backend-server
    image: [계정명]/app-for-infra-test:ver1
    ports:
      - 8080:8080
    environment:
      MYSQL_HOST: db
    depends_on:
      db:
        condition: service_healthy
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

mysql 이미지, 그리고 전에 도커허브에 업로드했던 이미지를 사용한다.

3. docker-compose.yml 파일을 통한 컨테이너 실행

방법은 매우 간단하다.

docker-compose up --detach

이 명령어 하나면 필요한 이미지나 네트워크 같은 자원들은 docker-compose에서 알아서 생성해준다. 명령어 하나면 된다.
실행이 잘 됐다. 다만 ver1에 대한 경고가 떴다. 다음에는 latest로 버전 설정을 하고 버전에 관한 걸 빼야겠다.
network도 잘 만들어졌고 컨테이너도 잘 실행중이다. api 요청도 잘 간다.

컨테이너 실행을 중지할 때도

docker-compose down 

명령어 단 하나면 된다. 그럼 관련된 네트워크, 컨테이너를 모두 삭제해준다.
확인해보면 모두 말끔하게 사라졌음을 알 수 있다. 정말 편리하다!


이것으로 Ubuntu 서버 위에 인프라 구축하기 3부작을 모두 마쳤다. 다음에는 CI/CD를 활용한 EC2 배포에 대한 글을 작성하겠다.

profile
부지런히 살자

0개의 댓글