![](/img/trans.png)
[英]can't open file '.manage.py': [Errno 2] No such file or directory
[英]python3: can't open file '/app/manage.py': [Errno 2] No such file or directory
我是 docker 的新手,我嘗試在 docker 容器上運行 django。 但是,在我運行“docker-compose up -d”命令后出現錯誤
python3: can't open file '/app/manage.py': [Errno 2] No such file or directory
顯示在docker。由於代碼在mac os中貌似可以成功運行,我懷疑是不是我目前運行文件的Windows11的問題。
我的問題是: 1.為什么會出現這個錯誤? 2.我該如何解決?
dockerfile:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt
COPY . /app/
docker-compose 文件
version: '3'
services:
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
我的項目目錄結構:
├── project
| ├──project
│ ├── __init__.py
│ ├── asgi.py
| ├── setting.py
| ├── urls.py
│ └── wsgi.py
| ├── manage.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
我試圖解決這個問題幾個小時,但我搜索的解決方案沒有用。 希望有人能幫忙。 非常感謝你!!
您應該像這樣更改 docker-compose 文件命令,因為 manage.py 文件存在於項目文件夾中。
version: '3'
services:
web:
build: .
command: python3 project/manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
您的 Dockerfile 正在將當前目錄樹復制到圖像的/app
目錄中,這很正常。 當 Compose command:
override 運行時,您仍在該/app
目錄中,但您的應用程序代碼位於project
子目錄中。
你應該能夠看到這個啟動臨時容器來查看圖像中構建的文件系統,比如
docker-compose run web ls
docker-compose run web ls ./project
有幾種方法可以解決這個問題( @Divyessh 的回答也應該有效),但最直接的可能是在運行容器時使project
子目錄成為當前目錄。 將CMD
中也是一個更好的做法,這樣您就可以獨立docker run
圖像而無需其 Compose 設置。
FROM python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /app # creates the directory, don't need to RUN mkdir
COPY requirements.txt ./ # shorter and safer to COPY into current directory
RUN pip install -r requirements.txt
COPY ./ ./
# add the following
WORKDIR /app/project # switch to project subdirectory
EXPOSE 8000 # document container-side port
CMD python3 ./manage.py runserver 0.0.0.0:8000 # standard command to run
在您的docker-compose.yml
文件中,您不需要command:
它與 Dockerfile CMD
相同)或volumes:
塊(這將導致圖像中的代碼被忽略並替換為其他內容)我會刪除這些線。
version: '3.8' # "3" means "3.0"
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.