简体   繁体   English

Django:我可以在自定义命令中使用带有 docker-compose 的子进程吗?

[英]Django: Can I use a subprocess w/ docker-compose inside a custom command?

I created a custom command in django and I want to use a docker-compose command in it.我在 django 中创建了一个自定义命令,我想在其中使用 docker-compose 命令。 I use a subprocess as follow:我使用如下子流程:

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

when I do it I get a FileNotFoundError:当我这样做时,我得到一个 FileNotFoundError:

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

Is it even possible to use docker-compose inside of a command?甚至可以在命令中使用 docker-compose 吗? It feels like I am missing something.感觉就像我错过了什么。

Thank you !谢谢 !

I see 2 possible things.我看到两件可能的事情。

  1. Your docker compose should run in background, so, you should add -d option at the end of the command: docker-compose -f docker-compose.admin.yml up -d您的 docker 撰写应该在后台运行,因此,您应该在命令末尾添加-d选项: docker-compose -f docker-compose.admin.yml up -d

  2. Best practice is start docker compose in background and you can take output with popen executing docker-compose -f docker-compose.admin.yml logs最佳实践是在后台启动 docker 撰写,您可以使用 output 并执行docker-compose -f docker-compose.admin.yml logs

You can also run docker-compose services and get interactive output, defining stdin_open: true in your yml file.您还可以运行 docker-compose 服务并获得交互式 output,在您的 yml 文件中定义stdin_open: true

  1. You could check if your current directory is where docker-compose.admin.yml exists, printing os.getcwd() and comparing it to docker-compose.admin.yml path.您可以检查当前目录是否在 docker-compose.admin.yml 存在的位置,打印os.getcwd()并将其与 docker-compose.admin.yml 路径进行比较。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM