Skip to content

04.环境变量

在将应用程序打包为 docker image 时,可以通过修改环境变量影响应用程序的某些行为。

查看容器设置的环境变量

使用 docker inspect <hash> 查看当前容器设置的环境变量。

在返回的信息中, Config 键 → Env 键中列出了设置的环境变量,示例如下:

cmd
"Config": {
            "Hostname": "9ba4920675c5",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
				"APP_COLOR=pink",
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=C.UTF-8",
                "GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D",
                "PYTHON_VERSION=3.6.6",
                "PYTHON_PIP_VERSION=18.1"
            ],
            "Cmd": null,
            "Image": "kodekloud/simple-webapp",
            "Volumes": null,
            "WorkingDir": "/opt",
            "Entrypoint": [
                "python",
                "app.py"
            ],
            "OnBuild": null,
            "Labels": {}
        },

这里的 APP_COLOR 环境变量设置为了 pink

设置环境变量

可以在运行镜像时设置环境变量,使用 -e 参数:

cmd
docker run -e APP_COLOR=blue simple-images

在下面的示例中, flask 应用程序将可以读取运行 image 时设置的系统环境变量:

python
import os
from flask import Flask

app = Flask(__name__)

...
...

color = os.environ.get("APP_COLOR")


@app.route("/")
def main():
    print(color)
    return render_template("hello.html", color=color)


if __name__ == "__main__":
    app.run()