Docker run -e 环境变量传值并使用Python获取

Docker run -e 环境变量传值并使用Python获取

背景

docker镜像中的Python程序,需要根据测试、生产环境的不同,使用不同的环境变量。
因此,需要在docker镜像启动时,传入不同的环境变量,供内部Python程序调用

实现

start.sh

在docker镜像(docker_env_run_demo:1.0)中编写脚本,声明环境变量

# 环境变量
echo "flag1=${flag1}"
echo "flag2=${flag2}"

# 进程启动命令
python3 /root/server.py

注:在window系统上写的run.sh文件,存在换行 ‘\r\n’ 问题,导致sh run.sh时无法成功执行,建议在linux中写该文件

Dockerfile

制作镜像,声明传入的环境变量

FROM docker_env_run_demo:1.0
WORKDIR /

ENV flag1="None"
ENV flag2="None"

ENTRYPOINT  /bin/bash /start.sh $flag1 $flag2

使用如下命令制作镜像

docker build -t docker_env_run_demo:2.0 -f Dockerfile .

server.py

import os
from flask import Flask, jsonify

app = Flask(__name__)


@app.route("/predict", methods=["POST"])
def predict():
    flag1 = os.environ.get("flag1", "None")
    flag2 = os.environ.get("flag2", "None")
    res = {
        "flag1": flag1,
        "flag2": flag2
    }
    return jsonify(res)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

docker run -e

docker run -e flag1="flag11" -e flag2="flag22" -d -p 1234:5000 docker_env_run_demo:2.0

参考文档:
docker run -e 使用环境变量传值(字符、数字、json)并用python解析

你可能感兴趣的:(Docker,docker,python,容器)