我正在使用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,那似乎并没有摆脱权限的问题。
答案 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