docker_practice/image/dockerfile/env.md
Kang Huaishuai ea00e0d82a
Update format
Signed-off-by: Kang Huaishuai <khs1994@khs1994.com>
2021-03-07 15:29:05 +08:00

36 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ENV 设置环境变量
格式有两种
* `ENV <key> <value>`
* `ENV <key1>=<value1> <key2>=<value2>...`
这个指令很简单就是设置环境变量而已无论是后面的其它指令 `RUN`还是运行时的应用都可以直接使用这里定义的环境变量
```docker
ENV VERSION=1.0 DEBUG=on \
NAME="Happy Feet"
```
这个例子中演示了如何换行以及对含有空格的值用双引号括起来的办法这和 Shell 下的行为是一致的
定义了环境变量那么在后续的指令中就可以使用这个环境变量比如在官方 `node` 镜像 `Dockerfile` 就有类似这样的代码
```docker
ENV NODE_VERSION 7.2.0
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
```
在这里先定义了环境变量 `NODE_VERSION`其后的 `RUN` 这层里多次使用 `$NODE_VERSION` 来进行操作定制可以看到将来升级镜像构建版本的时候只需要更新 `7.2.0` 即可`Dockerfile` 构建维护变得更轻松了
下列指令可以支持环境变量展开 `ADD``COPY``ENV``EXPOSE``FROM``LABEL``USER``WORKDIR``VOLUME``STOPSIGNAL``ONBUILD``RUN`
可以从这个指令列表里感觉到环境变量可以使用的地方很多很强大通过环境变量我们可以让一份 `Dockerfile` 制作更多的镜像只需使用不同的环境变量即可