[英]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.我看到两件可能的事情。
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
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
。
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.