Infra Management/Docker, Docker-compose

테스트를 위한 Redis/Redis-stats/Portainer docker-compose 만들기

bluebamus 2023. 3. 15.
sudo docker-compose up (동기화, 로그를 실시간 확인할 수 있음)

sudo docker-compose up -d (데몬화)

sudo systemctl enable docker (부팅시 docker 자동 실행)

django의 redis + celery를 테스트와 docker 컨테이너를 관리하기 위해 portainer의 필요성을 느끼게 되어

인터넷 검색을 통해 필요한 부분만 추려 만들게 되었다.

 

별 다른 내용이 없어 저장소까진 만들지 않았기에 코드를 그대로 올리기로 한다.

 

준비 사항 :

1. 데이터의 백업, conf 파일과 docker의 socker을 공유하기 위해서는 볼륨이 필요하다

   - data, redis 폴더를 만들고 redis/conf 폴더를 추가로 만들어 redis.conf 파일을 넣는다.

      - 필요한 폴더 및 파일 : data, redis, redis/conf/redis.conf 

   * docker 이미지 버전이 어떤 것인가에 따라 파일의 변수가 생략된 것이 있다. 나의 경우 특정 변수가 폐기되어 더이상 사용되지 않아 예전 버전의 redis.conf를 넣어서 에러가 발생핬다.

   * 현재 redis 버전 7.0.9, 하단 페이지에서 버전에 맞는 zip 파일을 받아 redis.conf만 복사하자.

https://github.com/redis/redis/releases

 

Releases · redis/redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs,...

github.com

   * 명확한 이유는 파악하지 못했지만, 구동시 연결이 거부되는 문제점이 계속 발생하였다.

      - 해결 방법 : redis.conf를 넣지 않고 아래 코드를 실행하면 이미지로 생성되는 redis.conf를 확인할 수 있다. 이를 사용하자.

 

코드 설명 :

- 상용 목적이 아니기 때문에 환경설정은 기본을 그대로 사용한다.

- portainer는 원래 두 개의 포트를 사용한다. 현재 여러 컴퓨터의 에이전트를 통합 관리할 필요가 없어 해당 포트 정의는 안한다.

   - 에이전트 관리용 : 8000

   - 관리자 페이지 접속용 : 9443

   - https://localhost:9443 으로 https를 꼭 붙여서 사용해야 한다.

- redis 모니터링 툴인 redis-stats는 http://localhost:63790 로 접속하며 된다.

# 파일 규격 버전
version: "3.1"

# 실행하려는 컨테이너들 정의
services:  
  # 서비스명
  redis:
    # 사용할 이미지
    image: redis:latest
    # 컨테이너명
    container_name: redis_test
    # 접근 포트 설정(컨테이너 외부:컨테이너 내부)
    ports:
      - 6379:6379
    # 스토리지 마운트(볼륨) 설정
    volumes:
      - ./redis/data:/data
      - ./redis/conf/:/user/local/conf/
    # 컨테이너에 docker label을 이용해서 메타데이터 추가
    labels:
      - "name=redis"
      - "mode=standalone"
    # 컨테이너 종료시 재시작 여부 설정
    restart: unless-stopped
    command: redis-server 

  redis-stats:
    image: insready/redis-stat:latest
    container_name: redis-stats
    ports:
      - '63790:63790'
    command: [
        '--verbose', # 추가 정보 보기
        '--server',
        'redis:6379',
      ]
    depends_on:
      - redis
    restart: unless-stopped

  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    ports:
      - 9443:9443
    volumes:
      - ./data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

트러블 슈팅 :

- redis.conf를 공식 사이트에서 가져와 사용했지만, 테스트시 접속 거부가 계속 발생했다. 로그를 추적해 문제를 해결할 "의지"가 부족하므로..

   - 해결 방법 : 빈 공간의 볼륨으로 실행하면 redis/conf/ 폴더에 자동으로 redis.conf 파일이 생성된다. 이것을 이용해 수정하자.

 

작동 방법 :

sudo docker-compose up (동기화, 실시간 로그를 확인할 수 있는 개발용 명령어)

sudo docker-compose up -d (데몬화)

sudo systemctl enable docker (부팅시 자동 실행 설정)
# 현재 동작중인 redis 컨테이너에 Redis-cli 콘솔로 접속
sudo docker exec -it redis_test redis-cli

결과 화면 :

 

reference 

redis docker-compose :

https://bskyvision.com/entry/docker-docker-compose%EB%A1%9C-Redis-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0

 

[docker] docker-compose로 Redis 컨테이너 실행하기

Redis는 cache 용도로 널리 사용되는 NoSQL DB입니다. 기본적으로 인메모리 DB이기 떄문에 디스트 스토리지에 데이터가 보관되는 것이 아니라 컴퓨터 메모리에 보관됩니다. 즉, Redis는 데이터를 메모

bskyvision.com

portainer docker-compose :

https://earthly.dev/blog/portainer-for-dcm/

 

Using Portainer with Docker and Docker Compose

Docker’s CLI and API are powerful tools, but they can be unwieldy when you’re working with large container fleets or looking for a more visual expe...

earthly.dev

https://it-svr.com/docker-web-gui-portainer/

 

Docker Web GUI 관리 툴 Portainer 설치하기.(+ 도커 설치하기)

안녕하세요. 달소입니다. 오늘은 Docker를 스크립트를 통해 도커 최신버전을 1분만에 설치하는방법 + Docker를 Web GUI에서 쉽게 관리할 수 있도록 도와주는 Portainer 설치까지 진행해보겠습니다. 기존

it-svr.com

 

댓글