0

我在 django 中创建了一个自定义命令,我想在其中使用 docker-compose 命令。我使用如下子流程:

class Command(BaseCommand):

def handle(self, *args, **options):
    data = open_file()
    os.environ['DATA'] = data
    command_name = ["docker-compose ", "-f", "docker-compose.admin.yml", "up"]
    popen = subprocess.Popen(command_name, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                             universal_newlines=True)
    return popen

当我这样做时,我得到一个 FileNotFoundError:

FileNotFoundError:[Errno 2] 没有这样的文件或目录:'docker-compose':'docker-compose

甚至可以在命令中使用 docker-compose 吗?感觉就像我错过了什么。

谢谢 !

4

1 回答 1

1

我看到两件可能的事情。

  1. 您的 docker compose 应该在后台运行,因此,您应该-d在命令末尾添加选项:docker-compose -f docker-compose.admin.yml up -d

  2. 最佳实践是在后台启动 docker compose,您可以使用 popen 执行输出docker-compose -f docker-compose.admin.yml logs

您还可以运行 docker-compose 服务并获得交互式输出,stdin_open: true在您的 yml 文件中进行定义。

  1. 您可以检查当前目录是否存在 docker-compose.admin.yml,打印os.getcwd()并将其与 docker-compose.admin.yml 路径进行比较。
于 2020-08-10T11:24:57.233 回答