개발놀이터

Docker로 Redis 배포하기 본문

배포/Docker

Docker로 Redis 배포하기

마늘냄새폴폴 2023. 6. 10. 11:46

이번 포스팅에선 도커를 이용해서 Redis를 배포하는 방법에 대해서 알아보도록 하겠습니다. 

 

배포는 아래와 같은 순서로 진행됩니다. 

 

  1. docker, docker-compose 설치
  2. Redis 이미지 다운받기
  3. Redis configuration 깃 클론
  4. docker compose 작성
  5. docker container 띄우기
  6. 잘 접속되는지 확인

이번 포스팅은 앞선 포스팅과 마찬가지로 EC2 인스턴스가 있다고 가정합니다. 또한 도커를 돌리기 위해서는 EC2를 medium으로 만드시는 것이 렉 없이 편안하게 구현하실 수 있습니다. 

 

medium은 한달에 5만원정도의 과금이 있습니다. 

 

Redis 배포

1. docker, docker-compose 설치

apt-get update
sudo apt-get install docker
sudo apt-get install docker-compose

 

설치하는거야 뭐 간단합니다. 

 

2. Redis 이미지 다운받기

docker pull redis:latest

뒤에 latest는 반드시 붙여주셔야합니다. 그렇지 않으면 태그가 none이 되어서 컨테이너 실행이 안됩니다. 

 

아마 태그가 none이 되는 것이 버저닝이 안된 redis 껍데기만 가져오는 것이 아닐까 생각됩니다. 

 

3. Redis Configuration 깃 클론

https://github.com/gingaminga/docker-redis

 

GitHub - gingaminga/docker-redis

Contribute to gingaminga/docker-redis development by creating an account on GitHub.

github.com

여기있는 redis.conf를 가져올겁니다. 위의 깃허브를 이용하는 이유는 다른 깃 리포지토리보다 가벼워서입니다. 

 

git clone https://github.com/gingaminga/docker-redis.git

 

4. docker compose 작성

docker-compose를 작성하기 전에 redis-server를 다운받아줍니다. 

 

sudo apt-get install redis-server

 

그리고 파일들을 정리해주고 필요한 정보를 얻어냅니다. 

$ ls
docker-redis

$ mkdir redis
$ ls
docker-redis redis

$ mv docker-redis redis
$ cd redis

$ cd docker-redis
$ pwd
여기서 경로를 확인해줍니다. 저의 경우는 /home/ubuntu/redis/docker-redis 입니다. 

$ cd ..
$ vim docker-compose.yml
yml 파일의 이름은 원하는대로 설정하시면 됩니다. 저는 가시성을 위해 docker-compose로 작성했습니다.

 

version: "3.8"

services:
  redis:
    image: redis
    container_name: redis_container
    command: redis-server /usr/local/etc/redis/redis.conf
    hostname: redis
    ports:
      - 6379:6379
    volumes:
      - /home/ubuntu/redis/docker-redis/redis.conf:/usr/local/etc/redis/redis.conf

위의 코드는 docker-compose.yml의 내부입니다. 하나씩 설명해보도록 하겠습니다. 

 

version : 도커 엔진에 따라 달라지는 버전입니다. 최신 버전은 3.8을 적으시면 됩니다. 

image : 우리가 다운받은 이미지의 이름입니다. 컨테이너가 실행될 때 해당 이미지를 기반으로 컨테이너를 만들어줄겁니다. 

container_name : 컨테이너 이름입니다. 이걸 설정해주면 컨테이너를 관리할 때 컨테이너 ID로 귀찮게 하지 않아도 됩니다. 

command : 도커 컨테이너가 실행될 때 /usr/local/etc/redis/redis.conf 의 configuration 파일을 기반으로 컨테이너를 만듭니다. 

hostname : 호스트 이름입니다. 

ports : 해당 포트를 열어줌으로써 통신이 가능하게 합니다. 

volumes : 우리가 아까 준비해뒀던 docker-redis의 conf 를 우리가 띄울 redis 컨테이너의 /usr/local/etc/redis/redis.conf에 바인딩시킵니다. 

 

이렇게 docker-compose가 작성되었는데 컨테이너를 바로 띄우지는 않고 우리가 아까 받았던 conf 파일을 조금 수정해줄겁니다. 

 

$ cd redis/docker-redis
$ vi redis.conf

 

여기 들어가시고 순서대로

  1. bind 127.0.0.1 이라고 되어있는 부분을 bind 0.0.0.0 으로 바꿔줍니다. 
  2. protected mode yes => protected mode no 이렇게 바꿔주세요. 
  3. requirepass 를 자신이 원하는 패스워드로 변경해주세요. (이 작업을 해야 외부 툴에서 접근이 가능한 것으로 추정됩니다.)

requirepass를 검색할 때 :/requirepass 이렇게 하시면 커서 아래쪽에서 requirepass가 검색됩니다. 반대로 위쪽에서 검색은 :?requirepass 입니다. 앞에 콜론 있습니다!

 

 

5. docker container 띄우기

이제 docker-compose를 띄워줍니다. 

 

$ docker-compose -f ./docker-compose.yml up -d
경로 뒤에있는 docker-compose.yml은 자신이 만든 이름으로 넣어주세요.

 

다음 아래의 명령어로 컨테이너를 확인합니다. 

 

$ docker ps

 

6. 잘 접속되는지 확인

이렇게 redis-cli 로 접속이 잘 되면 성공한겁니다. 이제 데이터를 넣고 조회까지 해보면 완료되는 모습입니다. 

 

자 이제 모두 마무리되었습니다. 

 

저는 Redis를 이용할 GUI 툴로 Medis를 선택했는데요. 처음부터 이걸 써서 Medis가 친숙하네요. Medis를 설치하는 방법은 포스팅에서 다루지 않습니다. 구글링을 통해 설치해주세요!

 

 

 

우리가 방금 redis-cli에서 넣은 데이터가 잘 들어있네요. 

 

 

마치며

여기까지 Redis를 도커로 띄워서 배포하고 외부 접속까지 완료했습니다. 제 프로젝트의 가장 핵심이 되는 성능 개선이 Redis를 이용한 캐싱이기 때문에 반드시 필요한 작업이었습니다. 

 

긴 글 읽어주셔서 감사합니다. 오늘도 즐거운 하루 되세요~