[ 2024.11.29 TIL ] AWS EC2에 Docker로 MySQL, Redis 띄우기

박지영·2024년 11월 29일
1

Today I Learned

목록 보기
87/88
post-thumbnail

AWS EC2 인스턴스 생성 및 연결

  1. 인스턴스 시작 -> 생성

  2. 이미지 선택 -> Ubuntu

  3. 인스턴스 유형 -> 프리 티어 t2.micro 선택

  4. 키 페어 설정 -> 기존 꺼 사용 or 새 키 페어 생성

  5. HTTPS 트래픽 허용, 퍼블릭 IP 자동 할당

  6. 인스턴스 시작

  7. 인스턴스 화면에서 연결 버튼 클릭

  8. SSH 클라이언트로 탭으로 이동

    • 8-1. 키페어가 있는 경로로 이동 -> git bash 실행 -> 이미지의 1번 명령어 실행
    • 8-2. 퍼블릭 DNS를 이용해서 연결 -> 이미지의 2번 명령어 실행('예:' 표시된 곳)
    • 8-3. yes 입력

AWS EC2에 Docker 설치하기

  1. 시스템 업데이트
    현재 패키지를 최신 상태로 업데이트
sudo apt update && sudo apt upgrade -y
  1. Docker 설치 준비
    Docker 설치를 위해 필요한 패키지를 설치
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  1. Docker 공식 GPG 키 추가
    Docker 패키지를 신뢰할 수 있도록 GPG 키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. Docker 저장소 추가
    Docker 패키지를 설치할 수 있도록 저장소를 추가
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Docker 설치
    Docker Engine과 CLI를 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. Docker 서비스 활성화 및 실행
    Docker를 시스템 부팅 시 자동으로 시작하도록 설정하고 실행
sudo systemctl start docker
sudo systemctl enable docker
  1. 설치 확인
docker --version // Docker version 27.3.1, build ce12230
sudo docker run hello-world

버전 확인까지 완료

AWS EC2에 Docker로 MySQL 띄우기

  1. EC2 보안 그룹 설정
    1-1. 인스턴스 보안 탭 -> 보안 그룹

    1-2. 인바운드 규칙 편집

    1-3. 유형: MySQL/Aurora, 프로토콜: TCP, 포트 범위: 3306, IP 범위를 지정

  2. Docker로 MySQL 실행
    2-1. MySQL Docker 이미지 가져오기

    docker pull mysql:latest

    2-2. MySQL 컨테이너 실행

    // 한글로 된 부분 수정해서 사용
    docker run -d --name mysql-container \
    -e MYSQL_ROOT_PASSWORD=루트 비밀번호 \
    -e MYSQL_DATABASE=데이터베이스명 \
    -e MYSQL_USER=유저 이름 \
    -e MYSQL_PASSWORD=유저 비밀번호 \
    -p 3306:3306 \
    mysql:latest

    2-3. 컨테이너 실행 상태 확인

    docker ps

  3. MySQL 접속 테스트
    3-1. EC2 내부에서 테스트

    docker exec -it mysql-container mysql -u 유저 이름 -p


    3-2. 로컬에서 테스트
    MySQL Workbench를 사용해서 테스트


    정상적으로 연결되는 모습을 확인.

AWS EC2에 Docker로 Redis 띄우기

  1. EC2 보안 그룹 설정
    1-1. 인스턴스 보안 탭 -> 보안 그룹

    1-2. 인바운드 규칙 편집

    1-3. 유형: 사용자 지정 TCP, 프로토콜: TCP, 포트 범위: 6379, anywhere IPv4

  2. Redis Docker 이미지 가져오기

docker pull redis:latest
  1. Redis 컨테이너 실행
docker run -d --name redis-container \
  -p 6379:6379 \
  redis:latest
  1. Redis 컨테이너 상태 확인
docker ps

  1. redis 설정 변경
    4-1. redis 설정 파일 생성

    mkdir -p ~/redis-data
    curl -o ~/redis-data/redis.conf https://raw.githubusercontent.com/redis/redis/7.0/redis.conf

    4-2. 설정 파일로 이동

    nano ~/redis-data/redis.conf

    4-3. redis.conf 내부의 bind, protected-mode 수정

    bind 0.0.0.0
    protected-mode no

    4-4. 비밀 번호 설정 - redis.conf 내부에 requirepass 추가

    requirepass 원하는 비밀번호

    4-5. 컨테이너 실행 시 설정 파일 마운트

    docker run -d --name redis-container \
    -p 6379:6379 \
    -v ~/redis-data/redis.conf:/usr/local/etc/redis/redis.conf \
    redis:latest redis-server /usr/local/etc/redis/redis.conf

    if 4-6. 이미 컨테이너가 실행 중이면

    docker stop redis-container
    docker rm redis-container

    기존 컨테이너 중지 및 삭제 후 4-5 명령어 사용

  2. Redis 접속 테스트
    5-1. EC2 내부에서 테스트

    docker exec -it redis-container redis-cli

    정상적으로 redis-cli에 접속되면 경로가 127.0.0.1:6379로 변한다.

    // 테스트 쿼리
    SET testkey "Hello, Redis!"
    GET testkey

    5-2. 외부에서 테스트
    redis insight를 이용하여 테스트 진행




    정상적으로 연결되는 모습 확인.

출처: https://velog.io/@wlsgur1533/AWS-EC2%EC%97%90-Docker%EB%A1%9C-MySQL-%EB%9D%84%EC%9A%B0%EA%B8%B0
출처: https://lucas-owner.tistory.com/47
출처: https://mungiyo.tistory.com/23
출처: chatgpt

profile
신입 개발자

0개의 댓글