Django Docker/Kubernetes Postgres data not appearing

2/25/2018

I just tried switching from docker-compose to docker stacks/kubernetes. In compose I was able to specify where the postgres data volume was and the data persisted nicely.

volumes:
- ./postgres-data:/var/lib/postgresql/data

I tried doing the same thing with the stack file and I can connect to the pod and use psql to see the schema but none of the data entered from docker-compose is there.

Any ideas why this might be?

Here's the stack.yml

version: '3.3'

    services:

      django:
        image: image
        build: 
          context: .
          dockerfile: docker/Dockerfile    
        deploy:
          replicas: 5
        environment:
          - DJANGO_SETTINGS_MODULE=config.settings.local
          - SECRET_KEY=password
          - NAME=postgres
          - USER=postgres
          - HOST=db
          - PASSWORD=password
          - PORT=5432
        volumes:
          - .:/application
        command: ["gunicorn", "--bind 0.0.0.0:8000", "config.wsgi"]
        ports:
          - "8000:8000"
        links:
         - db  

      db:
        image: mdillon/postgis:9.6-alpine
        volumes:
          - ./postgres-data:/var/lib/postgresql/data  
-- macintoshPrime
django
docker
docker-stack
kubernetes
postgresql

3 Answers

2/25/2018

You failed to mention how your cluster is provisioned, where is it running etc. so I will make an assumption we're talking about local tests here. If so, you probably have local docker/docker-compose and minikube installed.

If that is the case, please mind that minikube runs in it's own VM so it will not be affected by changes you make on your host by ie. docker, as it has it's own filesystem in vm.

Hint: you can run docker against docker daemon of minikube if you first run eval $(minikube docker-env)

-- Radek 'Goblin' Pieczonka
Source: StackOverflow

2/25/2018

For docker stacks, run the docker inspect command, it should show the mount point of the Postgres container.

  docker service inspect  --format='{{range .Spec.TaskTemplate.ContainerSpec.Mounts}} {{.Source}}{{end}}'  <StackName>
-- Sudharsan Sivasankaran
Source: StackOverflow

3/10/2018

Fixed in the last Docker Edge update.

-- macintoshPrime
Source: StackOverflow