I tried a very simple first test of a python app with a redis according to the docker documentation. This crashes after a while because redis cannot persist. I don't have a clue why. You can find the public repo here: Github repo
My current docker-compose.yml is:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis:latest
volumes:
- ./data:/data
Edit: this is an excerpt of the log:
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: this is the complete error Redis throws in 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
The funny thing is, I don't do anything to the redis image.
To connect to a Redis instance from another Docker container, add --link [Redis container name or ID]:redis to that container's docker run command. To connect to a Redis instance from another Docker container with a command-line interface, link the container and specify the host and port with -h redis -p 6379.
If persistence is enabled, data is stored in the VOLUME /data , which can be used with --volumes-from some-volume-container or -v /docker/host/dir:/data (see docs. docker volumes).
It is a permission error, log into the redis container via docker exec -it redis_container_name bash
and ensure it has write permissions on /data
.
It probably does not, and you can fix it several ways: use a docker volume
instead of bind-mounting the host, or try to fix permissions from the host by having matching uid/gid with the owner in the container.
Also, as stated in the docker hub page, you should set redis' command to:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis:latest
command: redis-server --appendonly yes
volumes:
- ./data:/data
if you intend to persist data.
Since your data
folder has the wrong permissions set, start by deleting it and letting docker-compose make a new one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With