我需要通过python运行bash命令,这样才能在pc和mac/linux中实现通用。./bin/production在powershell中不工作,将'bash‘放在前面会产生一个错误,即它不识别'docker’命令
./bin/制作内容:
#!/bin/bash
docker run --rm -it \
--volume ${PWD}/prime:/app \
$(docker build -q docker/prime) \
npm run build这是python脚本:
import subprocess
from python_on_whales import docker
cmd = docker.run('docker run --rm -it --volume ${PWD}/prime:/app $(docker build -q docker/prime) npm run build')
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
out, err = p.communicate()
print(out)这是运行python脚本时遇到的错误:
python_on_whales.exceptions.NoSuchImage:执行的docker命令是C:\Program Files\Docker\Docker\resources\bin\docker.EXE image inspect docker run --rm -it --volume ${PWD}/prime:/app $(docker build -q docker/prime) npm run build。它与代码1一起返回,stdout的内容是“[]”,stderr的内容是‘来自守护进程的错误响应:没有这样的映像: docker rm -it -卷${PWD}/ -q :/app $(docker -q docker/prime) npm运行构建:无效的引用格式:存储库名称必须是小写’。
运行该命令时,powershell中的长行docker run --rm -it--volume ${PWD}/prime:/app $(docker build -q docker/prime) npm run build可以工作,但我们希望为pc和mac/linux都提供一个通用的标准命令。
发布于 2022-08-17 00:05:05
Python鲸的docker.run()函数不使用docker run ...命令行。它是一个本地Python,需要将各种Docker选项表示为函数参数。
原则上,您可以使用该API重写这个Python脚本:
from pathlib import Path
from python_on_whales import docker
# build the image, returns an Image object
image = docker.build(Path.cwd() / 'docker' / 'prime')
# start the container; like `docker run ...`
docker.run(image,
command=['npm', 'run', 'build'],
volumes=[(Path.cwd() / 'prime', '/app')], # -v $(PWD)/prime:/app
interactive=True, # -i (required?)
tty=True, # -t (required?)
remove=True) # --rm来自docker.run()的返回值(不包括detach=True)是容器的stdout,示例print()是数据。
发布于 2022-08-16 23:55:33
这可能不是您想要的,但您可以尝试如下:
import platform
import subprocess
import os
cur_os = platform.system()
if cur_os == "Windows":
print("You are on windows")
os.system('Command here') # for windows
elif cur_os == "Darwin":
print("You are on mac")
subprocess.call('Command goes here') # for mac编辑:我是python的中间人,所以不要判断,如果我做错了什么,请给我反馈。谢谢。
https://stackoverflow.com/questions/73381445
复制相似问题