공부메모 & 오류해결/Infra

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

남건욱 2024. 12. 9. 00:17

목차

    반응형

    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 공부기록