Python Django:我可以在自定义命令中使用带有docker compose的子进程吗?
我在django中创建了一个自定义命令,我想在其中使用docker compose命令。我使用的子流程如下所示:Python Django:我可以在自定义命令中使用带有docker compose的子进程吗?,python,django,docker,docker-compose,django-commands,Python,Django,Docker,Docker Compose,Django Commands,我在django中创建了一个自定义命令,我想在其中使用docker compose命令。我使用的子流程如下所示: class Command(BaseCommand): def handle(self, *args, **options): data = open_file() os.environ['DATA'] = data command_name = ["docker-compose ", "-f", "dock
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吗?
感觉好像我错过了什么
谢谢大家! 我看到了两种可能的情况
-d
选项:docker compose-f docker-compose.admin.yml up-d
docker compose-f docker-compose.admin.yml日志获取输出
stdin\u open:true
os.getcwd()
,并将其与docker-compose.admin.yml路径进行比较可能需要
shell=true
?docker compose后有一个额外的空格。(不要使用shell=True
:很容易引入安全问题,使整个主机成为根目录。)