Dockerfile参考(10) – EXPOSE暴露端口和ENV设置环境变量

EXPOSE

  1. EXPOSE <port> [<port>...]

EXPOSE指令通知Docker,容器运行期间监听指定的网络端口。EXPOSE不会自动使主机的容器端口可访问。要设置监听EXPOSE指定的端口,必须使用-p参数来发布一组端口或-P参数来发布所有EXPOSE的端口。你可以暴露容器的一个端口并在外部发布另一个不同的端口。比如发布容器的80端口到主机的8080端口。

ENV

  1. ENV <key> <value>
  2. ENV <key>=<value> ...

ENV指令设置环境变量的值为。这个值可以用在之后的Dockerfile命令中并替换命令中所有的环境变量。
ENV指令有两种形式,第一种是,将设置单个变量为一个值。第一个空格之后的整个字符将设置为这个变量的值 – 包括空格和引号等字符。
第二种形式允许同时设置多个变量。设置这种形式使用了等于号,第一种是没有使用的。像命令行解析,引号和反斜杠可以用来包括空格。
例如:

  1. ENV myDog=Rex\ The\ Dog \
  2.     myCat=fluffy

和:

  1. ENV myName John Doe
  2. ENV myDog Rex The Dog
  3. ENV myCat fluffy

虽然这两种形式得到的结果一样,但推荐第一种,因为它只生成了一个缓存层。
使用ENV设置环境变量将永久存在于从该镜像运行的容器中。你可以使用docker inspect查看这些值,也可以使用

  1. docker run --env <key>=<value>

更改它们。

注意:环境变量的存在可能引起意外的副作用。例如,设置ENV DEBIAN_FRONTEND noninteractive可能会使在基于Debian镜像的apt-get用户感到困惑。要在单个命令中使用变量,可以使用

  1. RUN <key>=<value> <command>
标签:Docker 发布于:2019-11-19 22:24:23