[英]PYTHON dockerfile ENTRYPOINT exec command doesn't recognize ENV variables
[英]How to properly escape [] characters in a Dockerfile CMD and ENTRYPOINT exec mode?
我有一個 Dockerfile 設置了一個 CMD 語句,類似於以下:
CMD python app.py \
keyword1=value1 \
keyword1.keyword1a=[/some/path/here/,/and/another/path/] \
+keyword1.keyword1b=value3 \
keyword2=[config.yaml] \
keyword3=null
我想將其修改為一些組合的 ENTRYPOINT + CMD 語句,以便可以更輕松地更改腳本 arguments。 像這樣:
ENTRYPOINT ["python", "app.py"]
CMD ["keyword1=value1", \
"keyword1.keyword1a=[/some/path/here/,/and/another/path/]", \
"+keyword1.keyword1b=value3", \
"keyword2=[config.yaml]", \
"keyword3=null", \
]
但是,這不能正確解析命令,向我顯示如下消息:
/bin/sh: 1: [python,: 未找到
app.py: error: argument --cfg/-c: invalid choice: '[ "keyword1=value1" "keyword1.keyword1a=[/some/path/here/,/and/another/path/]" "+keyword1.keyword1b=value3" "keyword2=[config.yaml]" "keyword3=null"]' (choose from 'job', 'hydra', 'all')
如果我嘗試將所有 arguments 作為 exec 形式放入 ENTRYPOINT(或 CMD),我會得到一個不同的錯誤:
ENTRYPOINT ["python", "app.py", \
"keyword1=value1", \
"keyword1.keyword1a=[/some/path/here/,/and/another/path/]", \
"+keyword1.keyword1b=value3", \
"keyword2=[config.yaml]", \
"keyword3=null",
]
/bin/sh: 1: [python,: not found
我懷疑主要問題是系統如何考慮 [] 括號:如果我刪除包含這些的行,則該命令似乎被正確解析(但當然 python 腳本沒有按照我的意願執行)。
有沒有一個好辦法來逃避有問題的角色?
我在大衛的評論之后發現了問題:看起來我在列表中的尾隨逗號是罪魁禍首。 這有效:
ENTRYPOINT ["python", "app.py"]
CMD ["keyword1=value1", \
"keyword1.keyword1a=[/some/path/here/,/and/another/path/]", \
"+keyword1.keyword1b=value3", \
"keyword2=[config.yaml]", \
"keyword3=null"]
看起來 [] 不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.