You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python Flask应用在Docker中配置动态用户名密码环境变量?

如何将Flask应用的硬编码用户名密码改为Docker环境变量动态传入

嘿,作为Python和Docker新手,能写出Flask应用还尝试Docker部署已经超棒啦!我来一步步教你把硬编码的用户名密码改成可动态传入的环境变量,这样部署时就不用每次改代码啦~

第一步:修改Flask应用代码(test.py)

首先要让你的Flask应用从环境变量读取用户名和密码,而不是硬编码。我们用os.environ.get()来安全获取环境变量,还可以设置默认值防止没传变量时应用崩溃:

from flask import Flask
import os

app = Flask(__name__)

# 从环境变量读取,第二个参数是默认值(可选,可根据需求去掉)
username = os.environ.get('APP_USERNAME', 'test')
password = os.environ.get('APP_PASSWORD', '12345')

@app.route('/')
def hello():
    return f"Username: {username}, Password: {password}"

if __name__ == '__main__':
    # 注意要绑定0.0.0.0,否则容器外部无法访问
    app.run(host='0.0.0.0', port=5000)

小提示:如果你希望必须传入环境变量(不传就报错),可以直接用os.environ['APP_USERNAME'],但这样没传变量时应用会抛出KeyError,适合生产环境严格校验的场景。

第二步:更新Dockerfile(可选但推荐)

我们可以在Dockerfile里添加ENV指令设置默认环境变量,这样本地测试时不用每次传变量,运行容器时又能轻松覆盖:

FROM python:3.6
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install -r requirements.txt

# 设置默认环境变量,运行容器时可覆盖
ENV APP_USERNAME=test
ENV APP_PASSWORD=12345

EXPOSE 5000
CMD ["python", "/code/test.py"]

第三步:运行容器时动态传入变量

有两种常用方法可以在运行容器时传入自定义的用户名和密码:

方法1:直接用-e参数在命令行传入

适合变量不多的情况,直接在docker run命令里加-e指定变量:

# 替换your-image-name为你构建的镜像名称
docker run -d -p 5000:5000 -e APP_USERNAME="my_custom_user" -e APP_PASSWORD="my_secure_pass" your-image-name

方法2:用环境变量文件加载(推荐多变量场景)

如果有多个环境变量,写在命令行太麻烦,可以创建一个.env文件:

# .env文件内容
APP_USERNAME=my_custom_user
APP_PASSWORD=my_secure_pass

然后运行容器时用--env-file参数加载这个文件:

docker run -d -p 5000:5000 --env-file .env your-image-name

这样启动后,访问http://localhost:5000就能看到你传入的自定义用户名和密码啦!

内容的提问来源于stack exchange,提问作者Abraham Dhanyaraju Arumbaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:36:56