这相当于你正在寻找的ENTRYPOINT的“外壳形式”(不过你的基本图像中必须有一个外壳):
oci_image(
name = "move_data_image",
base = "@python_base",
entrypoint = [
"/bin/sh", "-c", " ".join([
"/opt/python/dataflow/move_data",
"--worker_image",
"$WORKER_IMAGE",
"--max_num_workers",
"$MAX_NUM_WORKERS",
"--runner",
"DataflowRunner",
]),
],
env = {
"WORKER_IMAGE": "",
"MAX_NUM_WORKERS": -1,
},
tars = [":move_data_layer"],
)
你的尝试相当于
ENTRYPOINT ["/opt/python/dataflow/move_data", "--worker_image", "$WORKER_IMAGE", ...]
在Dockerfile中,这也不起作用。你需要一些能读取环境变量的东西。
而不是使用
sh -c
,您可以修改Python代码以直接读取环境变量。您还可以编写一个包装器(shell脚本、Python或其他东西),读取环境变量并构建命令行。