Why can't redis access the disk in docker-compose?

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:

  • “golang.org/x/net/ipv4” working on Mac, but not on Linux
  • Getting code inside the Docker container
  • Docker push to artifactory gives a 403
  • Dockerizing Nodejs APP (graceful restart, ssl)
  • Connecting the Docker Daemon insde the CDK on RHEL based docker images
  • Attempting to access USB device from Docker in Windows
  • 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.

  • How to synchronize version control system revisions with Docker image versions?
  • Unable to connect to Docker container from host
  • Unable to pull docker image, getting 'remote error: access denied'
  • Should files from a base Docker image be present in a derived image?
  • Docker secret not working for MYSQL_ROOT_PASSWORD_FILE
  • Docker calling unit tests
  • 2 Solutions collect form web for “Why can't redis access the disk in docker-compose?”

    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.

    I have updated my repo with a working version, tag 0.2

    Once I worked with version 2 of the docker file it worked fine.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.