
こんにちは、次の 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"
を実行して crontab ファイルを削除しようとしましたconfig set dbfilename "dbfilename"
が、エラーで失敗しました。
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}'