通过python

时间:2019-09-12 02:25:45

标签: python docker

我正在使用python创建docker项目的模板,直到我要构建容器以创建映像的最后一步时,它工作正常。到目前为止,我的项目结构与此类似:

project
  |--flask_server.py
  |--main_script.py
  |--image_creator.sh
  |--Dockerfile
  |--requirements.txt

我的问题是文件image_creator.sh,基本上有:

docker build -t my_project:latest .

没有sudo就无法执行。到目前为止,这是我在python脚本create_contaner.py中尝试过的内容,该脚本具有以下代码:

import os
import subprocess
...
...
subprocess.call(['image_creator.sh'])

1)

python create_contaner.py 

2)

 sudo python create_contaner.py

3)

sudo su
python create_contaner.py 

对于这三种情况,我都会得到:

PermissionError: [Errno 13] Permission denied: 'image_creator.sh'

最后一个

我还尝试将我的当前用户添加到可以运行docker而不使用sudo的组中,如here

所述
sudo groupadd docker
sudo gpasswd -a $USER docker

从终端执行完之后,我可以执行:

docker build -t my_project:latest .

哪个可以使用sudo,但是如果从该用户打开python并尝试:

python create_contaner.py

我仍然遇到相同的错误。有人指出我使用docker-compose而不是docker build,那似乎并没有摆脱权限的问题。

1 个答案:

答案 0 :(得分:1)

在使用python调用脚本之前,先设置bash脚本的权限

 chmod +x image_creator.sh

如果要自动化,可以设置对python文件的权限

import os

command = os.popen('chmod +x image_creator.sh')
print(command.read())
print(command.close())

或者您检查更好的答案以在python here中运行bash