Docker-compose에 MongoDB, Redis 설치하기

Jung In Lee·2024년 4월 2일
0

Novelit 복원

주요기능 설정

(1) Docker-compose에 MongoDB 설치하기

  • docker-compose.yml 작성
version: "3"
services:
  mongodb:
    image: mongo
    container_name: mongodb
    restart: always
    ports:
      - ${MONGO_BINDING_PORT}:${MONGO_PORT}
    volumes:
      - ${MONGO_DATA_PATH}:/data/db
    env_file:
    - .env
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
      
  mongo-express:
    image: mongo-express
    container_name: mongo-express
    restart: always
    ports:
      - ${MONGOEXPRESS_BINDING_PORT}:${MONGOEXPRESS_PORT}
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
      - ME_CONFIG_MONGODB_URL=mongodb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@mongodb:${MONGO_PORT}
      - ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_USERNAME}
      - ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
  • .env 파일을 생성하여 ${} 설정값이나 비밀로 하고싶은 값들을 넣어준다.
vi ~/.env
  • MongoDB 이미지 다운
docker pull mongo
  • 이미지 확인
docker images
  • docker-compose 업데이트
docker-compose up -d
  • 아래것은 mongo-express인데, 웹에서 mongodb 상태를 볼수있는 프로그램이라고 한다.

(2) redis 설치하기

  • docker-compose.yml
version: "3"
services:
  redis:
    container_name: redis
    image: redis:7.2.4
    env_file:
    - .env
    ports:
      - ${REDIS_BINDING_PORT}:${REDIS_PORT}
    volumes:
      - ${REDIS_DATA_PATH}:/data
    command: redis-server --requirepass ${REDIS_PASSWORD} --port ${REDIS_PORT}
  • 레디스를 설치할때 주의할점은, 비밀번호를 꼭 설정하는 것이 좋다. 봇들이 돌아다니면서 flushall을 해버려서 key들을 다 날려버리기때문에 그렇다.

  • 설정하다보니 왠만한 것들은 다 암호화를 해놨다.

  • 이미지 풀하기

docker pull redis
  • 업데이트
docker-compose up -d
  • 레디스 점검
docker exec -it redis bash

redis-cli

ping -> pong (연결완료)
auth test -> wrong~하고 뜨면 비밀번호 설정완료
auth '${PASSWORD}' -> ok라고 뜨면 설정완료

마주친 에러

1) ERROR: for mongoDB(redis) 'ContainerConfig'

  • docker-compose 설정파일 오류로 보이는데, 이상이 없으면 만들어져있는 컨테이너랑 설정이 충돌하는것같다. 컨테이너를 지우고 다시 실행해보자.
#만들어놓은 전체 컨테이너
docker ps -a

#컨테이너 삭제
docker rm ${DOCKER_IMAGE}

2) AWS 중지

  • docker 이미지들을 풀하고 업데이트를 반복하다보니 aws가 멈춰버렸다.
  • 일단, 인스턴스를 중지하고 재실행시킨뒤 좀 있다가 되긴했는데..음

다음에 할일

  • spring boot 서버 올리기
  • kafka producer-consumer 예제 연습
    - 알림 성능 개선 목적
    - sse 방식으로 실행할시 걸리는 시간 테스트 : ngrinder 측정
    • 알림 10만개 전송 테스트
      - sse -> redis-cluster -> kafka 각각 성능테스트
profile
Spring Backend Developer

0개의 댓글