python - 从 python 运行 .sh 脚本作为 sudo

标签 python linux bash docker

我正在使用 python 开发一个项目,我想在其中自动创建 docker 容器。我已经有了项目文件夹,其中包含创建图像所需的所有文件。

其中之一是 create_image.sh

docker build -t my_container:latest .

目前我这样做:

sudo bash create_image.sh

但现在我需要从 python 中自动执行此过程。 我试过:

import os
import subprocess
subprocess.check_call("bash -c '. create_image.sh'", shell=True)

但是我得到这个错误:

CalledProcessError: Command 'bash -c '. create_image.sh'' returned non-zero exit status 1.

编辑:

用例是通过 API 自动创建容器,我在 flask 和 python 中有代码直到此时,我被困在从 docker 文件创建图像中。其余的是从模板中自动完成的。

最佳答案

你可以试试:

subprocess.call(['sudo', 'bash', 'create_image.sh' ])

相当于

sudo bash create_image.sh

注意:让我说有更好的方法可以自动创建 docker 容器 - 请检查 docker-compose它可以轻松构建和启动容器。如果您可以详细说明用例,我们可以帮助您为 docker 提供一个优雅的解决方案。可能不是python的问题

编辑: 根据评论,最好创建一个 docker-compose 和 makefile 用于发出 docker 命令。灵感 - https://medium.com/@daniel.carlier/how-to-build-a-simple-flask-restful-api-with-docker-compose-2d849d738137

关于python - 从 python 运行 .sh 脚本作为 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57896407/

相关文章:

bash - 根据一列对另一列进行排序

python - 为什么我在 Django 中的模板标签不起作用?

python - 删除 Pandas 中的索引名称

python - 通用对象 "watcher"代理,用于包装集合对象以记录状态更改(添加/删除)

php - 我将如何使用 PHP 对 Linux 用户和密码进行身份验证?

linux - 如何匹配文件中包含某些单词的前三行

python - 如何提取给定文件中带有 header 和序列的特定 fasta 文件?

python - 是否可以在 PyCharm 中生成 py.test 测试文件?

Linux 原始套接字 : Block Packets?

c++ - 创建一个自定义的lightdm迎宾器