
안녕하세요. 다음 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}'