<졸업프로젝트> 배포하기(2) - ec2기기에서 배포하기

돔푸·2024년 6월 10일

졸업프로젝트

목록 보기
6/6

우리는 저번 시간에 우리의 애플리케이션을 docker image로 만들었다. 이번에는 해당 docker image를 가지고 애플리케이션을 실행해보겠다!

그러기 위해서는 다음과 같은 단계를 거쳐야 한다.
1. ec2 인스턴스 만들고 docker, docker-compose 설치하기
2. ec2 인스턴스에 docker-compose.yml 작성하고 실행하기

1. ec2 인스턴스 만들고 설치하기


인스턴스 생성

  • OS image : ununtu 24.04 LTS
  • instance 유형 : t2.medium
  • 보안그룹 : 생성, ssh 트래픽 전체 허용
  • 스토리지 : 30GiB

이렇게 생성한 인스턴스 보안그룹의 인바운드 규칙을 다음과 같이 설정한다.
8080은 서버에 접근하기 위해서이고, 3306은 mysql 접근을 위해서 설정한 것이다.

docker 설치

ec2 기기에 연결해서 다음 명령어를 실행한다.

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo usermod -aG docker $USER
$ docker version
  • docker version을 했을때 버전이 잘 뜨면 정상이다.
  • 'sudo usermod -aG docker $USER' 명령은 docker 를 sudo 명령 없이 실행할 수 있도록 해준다.

docker-compose 설치

원래 'sudo apt-get install docker-compose-plugin'로 됐던 것 같은데, 나는 작동하지 않아서 수동으로 설치해주었다.

$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
$ docker compose version
  • docker compose version을 했을때 버전이 잘 뜨면 정상이다.

2. docker-compose.yml 파일 작성하기

'vim docker-compose.yml'로 아래와 같이 작성해준다.

services:
  db:
    container_name: db
    platform: linux/amd64/v3 #(1)
    image: mysql:8.4 #(2)
    restart: always
    ports:
      - "3306:3306"	#(3)
    environment:
      MYSQL_DATABASE: hongpoong	#(4)
      MYSQL_ROOT_PASSWORD: 1234	#(5)
      TZ: Asia/Seoul
    volumes:
      - db_data:/var/lib/mysql #(6)
  service:
    container_name: service
    image: dompoo/service:0516 #(7)
    restart: unless-stopped	#(8)
    ports:
      - "8080:8080"	#(9)
    depends_on: #(10)
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/hongpoong	#(11)
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: 1234
volumes: #(12)
  db_data: 

(1) : mysql 이미지의 플랫폼 설정
(2) : mysql 이미지 설정
(3) : mysql 컨테이너 expose
(4) : mysql에서 사용할 데이터베이스 명
(5) : mysql 루트 유저의 비밀번호, 이렇게 설정하면 root/1234 가 된다.
(6) : DB데이터가 컨테이너가 종료되어도 유지될 수 있도록 도커 볼륨 설정
(7) : 내가 DockerHub에 올렸던 이미지
(8) : AWS 기기를 중지했다 다시 시작하더라도 컨테이너가 자동으로 실행되도록 설정
(9) : 서비스 컨테이너 expose
(10) : db컨테이너보다 더 늦게 실행되도록 설정
(11) : mysql db의 url, 접속할 user 설정(IP가 아니라 컨테이너명으로 구분된다.)

이렇게 작성하고 'docker compose up'을 하면 드디어 서버가 실행된다! 야호!!

profile
나중에 또 모를 것들 모음

0개의 댓글