공부메모 & 오류해결/Infra

[AWS] EC2에 docker, dokcker-compose 설치하고 yml 작성하기

남건욱 2024. 12. 9. 00:17
반응형

목차

1. docker 설치

2. docker-compose 설치

3. docker-compose.yml 작성

 

1. docker 설치

우선 관리자 권한으로 실행할 일이 많으니 관리자 권한으로 전환하고 시작해 준다.

sudo su -

 

 

그 뒤 아래 명령어들을 차례로 입력해서 Docker를 설치해 준다.

1. 현재 시스템의 패키지 목록을 업데이트하여 최신 버전을 가져온다.
$ sudo apt-get update
 
2. HTTPS를 통한 패키지 다운로드 및 추가 저장소 관리에 필요한 도구들을 설치
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
 
3. Docker의 공식 GPG 키를 다운로드하여 인증된 패키지를 설치할 수 있도록 시스템에 추가.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 
4. Docker의 안정화(stable) 패키지 저장소를 현재 시스템의 패키지 소스에 추가.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5. Docker 저장소를 포함한 패키지 목록을 다시 업데이트하여 Docker 패키지를 사용할 수 있도록 설정.
$ sudo apt-get update
 
6. Docker의 주요 구성 요소(Docker CE, CLI, containerd)를 설치.
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

 

 

docker --version

이제 이 명령어로 도커가 잘 설치되었는지 확인해 준다. 나는 ec2에 docker가 기존에 설치되어 있었지만 다시 한번 설치해 줬다. (혹시 몰라서)

 

2. docker-compose 설치

아래 명령어들을 차례로 입력해서 docker-compose를 설치해 준다.

1. Docker Compose의 실행 파일을 GitHub의 공식 릴리스 페이지에서 다운로드하여 /usr/local/bin/docker-compose 경로에 저장.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2. 다운로드한 Docker Compose 실행 파일에 실행 권한을 부여하여 명령어로 실행 가능하도록 설정.
$ sudo chmod +x /usr/local/bin/docker-compose

 

docker-compose --version

이제 위 명령어로 docker-compose가 잘 설치되어 있는지 확인해 보자. 위와 같이 버전이 정상적으로 뜬다면 성공이다.

 

3. docker-compose.yml 작성

version: "3.8"

services:
  # Spring Boot Application
  springboot-app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: springboot-app
    ports:
      - "8080:8080" # 로컬 8080 -> 컨테이너 8080
    environment:
      SPRING_DATASOURCE_URL: jdbc:mariadb://db:3306/{db명}
      SPRING_DATASOURCE_USERNAME: {USERNAME}
      SPRING_DATASOURCE_PASSWORD: {PASSWORD}
      SPRING_REDIS_HOST: redis
      SPRING_REDIS_PORT: 6379
      SPRING_MONGODB_URI: mongodb://mongo:27017/chat
      SPRING_MAIL_USERNAME: {USERNAME}
      SPRING_MAIL_PASSWORD: {PASSWORD}
      CLOUD_AWS_CREDENTIALS_ACCESS_KEY: {ACCESS_KEY}
      CLOUD_AWS_CREDENTIALS_SECRET_KEY: {SECRET_KE}
      CLOUD_AWS_REGION_STATIC: ap-northeast-2
      CLOUD_AWS_S3_BUCKET: {S3_BUCKET}
    depends_on:
      - db
      - redis
      - mongo

  # React Application
  react-app:
    build:
      context: ./react
      dockerfile: Dockerfile
    container_name: react-app
    ports:
      - "3000:3000" # 로컬 3000 -> 컨테이너 3000

  # MariaDB
  db:
    image: mariadb:10.6
    container_name: mariadb
    ports:
      - "3306:3306" # 로컬 3306 -> 컨테이너 3306
    environment:
      MYSQL_ROOT_PASSWORD: {PASSWORD}
      MYSQL_DATABASE: {DATABASE}
    volumes:
      - db_data:/var/lib/mysql

  # Redis
  redis:
    image: redis:7
    container_name: redis
    ports:
      - "6379:6379" # 로컬 6379 -> 컨테이너 6379

  # MongoDB
  mongo:
    image: mongo:6
    container_name: mongodb
    ports:
      - "27017:27017" # 로컬 27017 -> 컨테이너 27017
    volumes:
      - mongo_data:/data/db

volumes:
  db_data:
  mongo_data:

기본적으로 내가 사용할 docker-compose양식이다. 본인이 필요한 목록에 맞춰 추가, 수정해서 작성하면 된다. 이 부분은 인터넷에도 자료가 많고, gpt도 매우 잘 작성해 준다. 이를 이용해 주면 될 것이다.

 

이제 다음 글은 현재 작성해 둔 docker-compose.yml을 실행시킬 것이다. 각 프로젝트를 ec2로 가져와서 구동시킬 예정이다. 

반응형
프로필사진

남건욱's 공부기록