Predixy로 Docker Compose를 구성하는 방법

Predixy로 Docker Compose를 구성하는 방법

Predixy는 Redis와 같은 메모리 내 데이터베이스를 캐싱하기 위한 프록시 서버입니다.
Docker Compose로 구성하는 방법.

1. Docker Compose 파일 생성

먼저 Predixy와 Redis를 함께 사용하는 Docker Compose 파일을 만듭니다.
예를 들어 docker-compose.yml 파일을 다음과 같이 작성합니다.

vim docker-compose.yml
version: '3'
services:
  redis:
    image: redis:latest
    container_name: redis
    hostname: redis
    ports:
      - "6379:6379"
  predixy:
    image: haandol/predixy:latest
    container_name: predixy
    hostname: predixy
    ports:
      - "7617:7617"
    links:
      - redis
    environment:
      PREDIXY_BACKENDS: "redis://redis:6379"
      PREDIXY_LOG_LEVEL: "info"

이 작성 파일은 Redis와 Predixy라는 두 가지 서비스를 정의합니다.
Redis 서비스는 redis:latest 이미지로 컨테이너를 생성하고 호스트의 포트 6379를 컨테이너의 포트 6379에 매핑합니다.

Predixy 서비스는 이미지 predixy/predixy:latest로 컨테이너를 만들고 호스트의 포트 7617을 컨테이너의 포트 7617에 연결합니다.
또한 링크 옵션을 사용하여 Redis 서비스에 연결합니다.
마지막으로 환경 옵션을 사용하여 Predixy에 대한 환경 변수를 설정합니다.

2. Docker Compose 실행

Docker Compose 파일을 만든 후 docker-compose up 명령으로 작성을 실행할 수 있습니다.
이 명령을 실행하면 Redis와 Predixy 서비스가 함께 시작되며 Predixy는 Redis를 캐싱의 백엔드로 사용합니다.

docker-compose config
docker-compose up -d
$ docker-compose ps
NAME                       IMAGE                    COMMAND                  SERVICE             CREATED             STATUS              PORTS
docker-predixy-predixy-1   haandol/predixy:latest   "/usr/local/bin/pred…"   predixy             17 seconds ago      Up 15 seconds       0.0.0.0:7617->7617/tcp
docker-predixy-redis-1     redis:latest             "docker-entrypoint.s…"   redis               17 seconds ago      Up 16 seconds       0.0.0.0:6379->6379/tcp

Redis 버전 정보 확인

docker-compose exec redis sh -c "redis-cli --version"
$ docker-compose exec redis sh -c "redis-cli --version"                                                                           
redis-cli 7.0.9

Predixy 버전 정보 확인

docker-compose exec predixy sh -c "predixy -v"
$ docker-compose exec predixy sh -c "predixy -v"
predixy predixy-1.0.4

이제 http://localhost:7617을 방문하여 Predixy 대시보드에 액세스하고 Redis 데이터를 캐싱하고 있는지 확인할 수 있습니다.

docker run -it --rm --name redis-cli redis:latest sh -c "redis-cli -h localhost -p 7617 --version"
$ docker run -it --rm --name redis-cli redis:latest sh -c "redis-cli -h localhost -p 7617 --version"
redis-cli 7.0.9

Redis 클라이언트에서 테스트

  • 문장
docker run -it --rm --name redis-cli --add-host=redis:host-gateway redis:latest sh -c "redis-cli -h redis -p 6379 set foo bar"
$ docker run -it --rm --name redis-cli --add-host=redis:host-gateway redis:latest sh -c "redis-cli -h redis -p 6379 set foo bar"
OK
  • 받다
docker run -it --rm --name redis-cli --add-host=redis:host-gateway redis:latest sh -c "redis-cli -h redis -p 6379 get foo"
$ docker run -it --rm --name redis-cli --add-host=redis:host-gateway redis:latest sh -c "redis-cli -h redis -p 6379 get foo"
"bar"