RDB 파일 Crontab에 대한 Docker Compose 권한 내부의 Redis가 거부되었습니다.

RDB 파일 Crontab에 대한 Docker Compose 권한 내부의 Redis가 거부되었습니다.

안녕하세요. 다음 docker-compose.yaml 파일이 있습니다.

version: "3.9"

volumes:
  local_postgres_data2: {}
  local_postgres_data_backups2: {}

services:
  postgres:
    image: postgres
    container_name: angel-postgres
    restart: always
    volumes:
      - local_postgres_data2:/var/lib/postgresql/data:Z
      - local_postgres_data_backups2:/backups:z
    environment:
      POSTGRES_DB: angel-agility
      POSTGRES_HOST: localhost
      POSTGRES_USER: angel-user
      POSTGRES_PASSWORD: angel123
    ports:
      - "5432:5432"

  redis:
    container_name: angel-redis
    image: redis:latest
    ports:
      - '6379:6379'
    restart: unless-stopped

docker-compose up을 실행하면 Redis 로그에 오류가 발생합니다.

2276:C 29 Mar 2022 20:32:52.005 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied
1:M 29 Mar 2022 20:32:52.105 # Background saving error

다양한 플랫폼에서 모든 솔루션을 시도했지만 Redis를 작동시킬 수 없었습니다. 작동하게 만드는 단서나 방향은 높이 평가될 것입니다.

또한 문제가 왜 발생했는지 자세히 설명하는 것도 독자와 저에게 큰 도움이 될 것입니다. 기대합니다.

답변1

비슷한 방식으로 AWS ECS에서 Redis 컨테이너를 실행하는 것과 동일한 문제가 발생했습니다.

Redis 컨테이너에 연결하고 다음을 실행했습니다.

redis-cli
> CONFIG GET dbfilename

다음을 반환했습니다.

1) "dbfilename"
2) "crontab"

config set dbfilename "dbfilename"오류로 인해 실패한 crontab 파일을 실행하여 제거하려고 했습니다 .

나는 redis가 실행되고 있다는 것을 알았습니다.없이구성 파일. 그래서 redis용 추가 볼륨을 추가하고 touch data/redis/config/redis.conf.

그런 다음 그에 따라 작성 파일을 변경했습니다.

  redis:
    container_name: redis
    command: redis-server /conf/redis.conf
    image: redis:latest
    volumes:
       - "./data/redis/data:/data"
       - "./data/redis/config:/conf"
    ports:
      - '6379:6379'
    restart: unless-stopped

컨테이너를 재부팅한 후 동일한 CONFIG GET dbfilename명령을 실행했지만 이번에는 crontab 파일이 누락되었습니다.

그 후 모든 것이 작동했습니다 :)

레디스 구성

또한 인터넷에서 액세스할 수 있는 경우 Redis 서버에 대한 비밀번호를 설정했는지 확인하세요.

    docker run -d \
    -h redis \
    -e REDIS_PASSWORD=your-super-secure-password \
    -v redis-data:/data \
    -v redis-config:/conf \
    -p 6379:6379 \
    --name redis \
    --restart always \
    redis:latest /bin/sh -c 'redis-server /conf/redis.conf --appendonly yes --requirepass ${REDIS_PASSWORD}'

관련 정보