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
版权声明:本文为qq_41982466原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。