Python manage.py和docker组合在不同的目录中?
我不是docker方面的专家,我想做的应该不难,我只是希望能够运行manage.py命令,让我的docker在不同的目录中编写,并且在运行命令时不指定manage.py的位置 因此,现在我有一个目录,其中包含docker-compose.yml和一个名为backend的文件夹,manage.py文件位于该文件夹中。我只想能跑Python manage.py和docker组合在不同的目录中?,python,django,docker,django-rest-framework,docker-compose,Python,Django,Docker,Django Rest Framework,Docker Compose,我不是docker方面的专家,我想做的应该不难,我只是希望能够运行manage.py命令,让我的docker在不同的目录中编写,并且在运行命令时不指定manage.py的位置 因此,现在我有一个目录,其中包含docker-compose.yml和一个名为backend的文件夹,manage.py文件位于该文件夹中。我只想能跑 docker-compose run --rm web python3 manage.py 而不是 docker-compose run --rm web python3
docker-compose run --rm web python3 manage.py
而不是
docker-compose run --rm web python3 backend/manage.py
我怎么做
这是我的写作文件
version: '3'
services:
db:
image: postgres:13
env_file: .env
web:
build:
context: ./backend
env_file: .env
command: python backend/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
这个问题有多种解决方案。 其中之一是设置
工作目录
,而不是将目录装载到其他目录:
version: '3'
services:
db:
image: postgres:13
env_file: .env
web:
build:
context: ./backend
env_file: .env
working_dir: /code/backend
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
设置工作目录相当于将当前工作目录更改为给定目录,即将“cd”更改为该目录。
然后执行包含python3 manage.py命令的每一个命令,并将目录设置为其当前目录
请注意,命令
行在docker compose文件中是如何更改的
version: '3'
services:
db:
image: postgres:13
env_file: .env
web:
build:
context: ./backend
env_file: .env
command: python backend/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
希望这有助于:D通过服务的卷配置将后端目录装载到容器的工作目录。工作目录是您的命令将从中运行的位置。您可以包含docker-compose.yml文件,以便我提供特定的解决方案吗?这是compose文件@maxmTrying您的解决方案我收到此错误:无法为服务web创建容器:工作目录“backend”无效,它需要是绝对路径抱歉,我错过了装入的卷目录。我编辑了答案,解决方案现在应该可以了:你真是个天才哈哈,我花了这么多时间试着做这个简单的事情,谢谢!很乐意帮忙:D