Docker-compose некорректно монтирует тома для контейнера django
Запуск Docker на Windows 10 с WSL 2 Ubuntu на нем. У меня есть следующее 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"]
Я создаю образ с помощью docker build -t django-img .
и затем у меня есть следующее .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
Когда я запускаю docker-compose up -d
внутри папки django-project (.yml и Dockerfile находятся там), я получаю запущенный контейнер, но я не вижу на хосте ни одного файла из контейнера. Если я запускаю ls
в контейнере, однако, я вижу, что все файлы там:
Как я могу редактировать файлы контейнера, используя редактор на моем хосте?
p.s.: Я уже протестировал слэши томов ("/") с другим контейнером, и они работают нормально, поскольку я использую WSL.
ДОПОЛНЕНИЕ Здесь содержимое моих контейнерных папок, используя относительные пути, я пробовал
volumes:
- /mnt/c/Users/claud/docker-env/django/django_project:/root/django_project
но он все равно не показал файлы в хосте.
Я думаю, что проблема в том, что ваше монтирование тома относится к абсолютному пути /django_project
, но вы указываете WORKDIR $HOME
, который является /root
в вашем Dockerfile. Дополнительной подсказкой является то, что вы видите свои файлы, когда вы ls -la ./django_project
в контейнере, используя относительный путь.
Наверняка вы сможете решить проблему, обновив определение службы docker-compose.yml django_c
, чтобы вместо этого указать /root/django_project
в качестве монтирования тома:
volumes:
- /mnt/c/Users/claud/docker-env/django/django_project:/root/django_project