Docker-compose doesn't mount volumes correct for django container

Running Docker on Windows 10 with WSL 2 Ubuntu on it. I have the following Dockerfile:

FROM ubuntu

#base directory
ENV HOME /root
#subdirectory name for the REST project
ENV PROJECT_NAME django_project
#subdirectory name of the users app
ENV APP_NAME users

#set the working directory
WORKDIR $HOME

#install Python 3, the Django REST framework and the Cassandra Python driver
RUN apt-get update
RUN apt -y install python3-pip 2> /dev/null
RUN pip3 install djangorestframework
RUN pip3 install cassandra-driver

#initialize the project (blank project) and creates a folder called $PROJECT_NAME
#with manager.py on its root directory
RUN django-admin startproject $PROJECT_NAME .
#install an app in the project and create a folder named after it
RUN python3 manage.py startapp $APP_NAME

ENV CASSANDRA_SEEDS cas1

ENTRYPOINT ["python3","manage.py", "runserver", "0.0.0.0:8000"]

I build a image with docker build -t django-img . and then I have the following .yaml:

version: '3'
services:
  django_c:
    container_name: django_c
    image: django-img
    environment:
      - CASSANDRA_SEEDS='cas1'
    ports:
      - '8000:8000'
    volumes:
      - /mnt/c/Users/claud/docker-env/django/django_project:/django_project

When I run docker-compose up -d inside django-project folder (.yml and Dockerfile are there), I get the container running, but I can't see in the host any file from the container. If I run ls in the container, however, I see all files are there:

enter image description here

How am I supposed to edit the container files using an editor in my host?

p.s.: I've already tested the volume slashes ("/") with another container and they work fine since I'm using WSL.

ADDITION Here the content of my container folders using relative paths, I tried

volumes:
      - /mnt/c/Users/claud/docker-env/django/django_project:/root/django_project

but it still did not show the files in the host. enter image description here

I think the issue is that your volume mount refers to the absolute path /django_project, but you specify WORKDIR $HOME which is /root in your Dockerfile. An additional clue is that you see your files when you ls -la ./django_project in the container using a relative path.

I'll bet you can fix the problem by updating your docker-compose.yml django_c service definition to specify /root/django_project as your volume mount instead:

volumes:
    - /mnt/c/Users/claud/docker-env/django/django_project:/root/django_project
Back to Top