我正在学习 Dockerfile,之前没有使用过curl。
我试图理解第 26 行这个 Dockerfile。
&& bash -c 'curl "https://nodejs.org/dist/$(<.node_version.txt)/node-$(<.node_version.txt)-linux-x64.tar.gz" > /home/meteorapp/meteorapp/build/required-node-linux-x64.tar.gz' \
是否$(<.node_version.txt)
意味着我必须想出一些文本作为它期望的值或按原样使用,作为命令的一部分?
答案1
这意味着您需要有一个名为.node_version.txt
.该文件中应该是您想要的节点的版本号。例如:v4.6.0
或latest
。要查看有效的版本字符串,请转到https://nodejs.org/dist/
所发生的情况是该构造$(<.node_version.txt)
被文件的内容替换。
这条线
https://nodejs.org/dist/$(<.node_version.txt)/node-$(<.node_version.txt)-linux-x64.tar.gz
变成
https://nodejs.org/dist/v4.6.0/node-v4.6.0-linux-x64.tar.gz
该结构$(<filename)
是一个特殊的变体命令替换。它实际上相当于$(cat filename)
.