Dockerのドキュメントによると、redisを使用してpythonアプリの非常に簡単な最初のテストを試しました。redisが持続できないため、しばらくするとクラッシュします。理由はわかりません。できます。ここでパブリックリポジトリを見つけます: Githubリポジトリ
私の現在のdocker-compose.ymlは次のとおりです。
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis:latest
volumes:
- ./data:/data
編集:これはログの抜粋です:
1:M 09 Feb 10:51:15.130 # Background saving error
1:M 09 Feb 10:51:21.072 * 100 changes in 300 seconds. Saving...
1:M 09 Feb 10:51:21.073 * Background saving started by pid 345
345:C 09 Feb 10:51:21.074 # Failed opening .rdb for saving: Permission denied
1:M 09 Feb 10:51:21.173 # Background saving error
1:M 09 Feb 10:51:27.011 * 100 changes in 300 seconds. Saving...
1:M 09 Feb 10:51:27.011 * Background saving started by pid 346
346:C 09 Feb 10:51:27.013 # Failed opening .rdb for saving: Permission denied
Edit2:これはRedisがPythonでスローする完全なエラーです:
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
面白いのは、redisイメージには何もしないということです。
これは権限エラーです。docker exec -it redis_container_name bash
を介してredisコンテナにログインし、/data
への書き込み権限があることを確認してください。
おそらくそうではなく、いくつかの方法で修正できます。ホストをバインドマウントする代わりにdocker volume
を使用するか、コンテナ内の所有者とuid/gidを一致させることでホストからのアクセス許可を修正してみてください。
また、Dockerハブページに記載されているように、redisのコマンドを次のように設定する必要があります。
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis:latest
command: redis-server --appendonly yes
volumes:
- ./data:/data
データを永続化する場合。
data
フォルダーに間違ったアクセス許可が設定されているため、まずフォルダーを削除し、docker-composeに新しいアクセス許可を作成させます。
リポジトリを動作バージョンのタグ0.2で更新しました
Dockerファイルのバージョン2を使用すると、正常に機能しました。