簡體   English   中英

docker-compose 沒有為 django 容器安裝正確的卷

[英]docker-compose doesn't mount volumes correct for django container

在 Windows 10 上運行 Docker 和 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

當我在django-project文件夾中運行docker-compose up -d時(.yml 和 Dockerfile 在那里),我讓容器運行,但我在主機中看不到容器中的任何文件。 但是,如果我在容器中運行ls ,我會看到所有文件都在那里:

在此處輸入圖像描述

我應該如何使用主機中的編輯器來編輯容器文件?

ps:我已經用另一個容器測試了卷斜杠(“/”),它們工作正常,因為我使用的是 WSL。

添加這里我的容器文件夾的內容使用相對路徑,我試過了

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

但它仍然沒有顯示主機中的文件。 在此處輸入圖像描述

我認為問題在於您的卷掛載是指絕對路徑/django_project ,但是您在Dockerfile中指定WORKDIR $HOME/root 另一個線索是,當您使用相對路徑在容器中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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM