【问题标题】:manage.py and docker-compose in different directories?manage.py 和 docker-compose 在不同的目录中?
【发布时间】:2021-08-05 16:31:01
【问题描述】:

我不是 docker 专家,我想我想做的事情应该不难,我只是希望能够运行 manage.py 命令,让我的 docker-compose 在不同的目录中,而不是指定管理的位置。 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

【问题讨论】:

  • 通过服务的volumes配置将后端目录挂载到容器的工作目录。工作目录是运行命令的地方
  • 能否包含您的 docker-compose.yml 文件,以便我提供具体的解决方案?
  • 这是撰写文件@maxm

标签: python django docker django-rest-framework docker-compose


【解决方案1】:

这个问题有多种解决方案。 其中之一是设置working_dir,而不是将目录挂载到不同的目录:

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 文件中 command-line 的变化

希望对你有所帮助:D

【讨论】:

  • 尝试您的解决方案时出现此错误:无法为服务 Web 创建容器:工作目录“后端”无效,它需要是绝对路径
  • 对不起,我错过了挂载的卷目录。我编辑了答案,解决方案现在应该可以工作了:D
  • 你真是个天才哈哈我花了这么多时间试图做这个简单的事情,谢谢!
  • 乐于助人:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多