Python manage.py和docker组合在不同的目录中?

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方面的专家,我想做的应该不难,我只是希望能够运行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 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