개발놀이터
Docker로 Redis 배포하기 본문
이번 포스팅에선 도커를 이용해서 Redis를 배포하는 방법에 대해서 알아보도록 하겠습니다.
배포는 아래와 같은 순서로 진행됩니다.
- docker, docker-compose 설치
- Redis 이미지 다운받기
- Redis configuration 깃 클론
- docker compose 작성
- docker container 띄우기
- 잘 접속되는지 확인
이번 포스팅은 앞선 포스팅과 마찬가지로 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
여기있는 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
여기 들어가시고 순서대로
- bind 127.0.0.1 이라고 되어있는 부분을 bind 0.0.0.0 으로 바꿔줍니다.
- protected mode yes => protected mode no 이렇게 바꿔주세요.
- 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를 이용한 캐싱이기 때문에 반드시 필요한 작업이었습니다.
긴 글 읽어주셔서 감사합니다. 오늘도 즐거운 하루 되세요~
'배포 > Docker' 카테고리의 다른 글
Docker + Nginx 를 이용해 스프링 프로젝트 무중단 배포하기 : 방법 (0) | 2023.06.12 |
---|---|
Docker Hub (0) | 2023.06.12 |
EC2 Docker + Nginx를 이용해 스프링 프로젝트 배포하기 (0) | 2023.06.10 |
도커 주요 명령어 (컨테이너와 이미지 관련) (0) | 2023.06.09 |
Docker 로 MySQL 생성 후 외부 연결 (0) | 2023.06.06 |