當我嘗試使用這行代碼構建 Dockerfile 時:
RUN modifyPermissions() {if [ -n "${OWNER}" ]; then \
chown "${OWNER}":zagrebgroup -R /var/log/app /mnt;\
else\
chown 1001:zagrebgroup -R /var/log/app /mnt;\
fi\
}
我有這個錯誤:
/bin/sh: 1: Syntax error: "}" unexpected
看起來問題出在最后一個大括號中,但我不明白為什么。請幫忙!天吶!
uj5u.com熱心網友回復:
原始語法錯誤的來源是{必須后跟空格。這在語法上是正確的:
RUN modifyPermissions() { if [ -n "${OWNER}" ]; then \
chown "${OWNER}":zagrebgroup -R /var/log/app /mnt;\
else\
chown 1001:zagrebgroup -R /var/log/app /mnt;\
fi\
}
但正如人們在評論中指出的那樣,每個RUN命令都在一個單獨的 shell 中執行,因此在一個陳述句中定義的函式、變數等RUN將對其他人不可用。像這樣的函式有用的唯一方法是,如果您在同一RUN腳本中使用該函式:
RUN modifyPermissions() { if [ -n "${OWNER}" ]; then \
chown "${OWNER}":zagrebgroup -R /var/log/app /mnt;\
else\
chown 1001:zagrebgroup -R /var/log/app /mnt;\
fi\
}; \
modifyPermissions
...在這種情況下,您沒有為自己節省任何精力;您不妨將整個事情簡化為:
RUN chown "${OWNER:-1001}":zagrebgroup -R /var/log/app /mnt
這以更簡單的方式完成了同樣的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420394.html
標籤:
