部署Flask应用至AWS Lightsail时Docker容器stripe_key环境变量报错
Flask应用部署AWS Lightsail时的环境变量配置问题
正在将Flask应用部署至AWS Lightsail,遵循官方教程步骤2b操作,已添加index.html、templates、static等自定义文件。
目录结构
myproject | |--static |--templates | |--my_templates | |--index.html | |--.env |--.gitignore |--app.py |--containers.json |--Dockerfile |--public-endpoints.json |--requirements.txt
执行命令时的错误
执行docker run -p 5000:5000 flask-container时,出现以下错误:
File "/app/./app.py", line 7, in <module> stripe.api_key = os.environ['stripe_key'] ~~~~~~~~~~^^^^^^^^^^^^^^ File "<frozen os>", line 685, in __getitem__ KeyError: 'stripe_key'
相关文件内容
.env文件
... stripe_key='sk_*****'
app.py开头代码
from flask import Flask, render_template, request, redirect from jinja2 import Environment, FileSystemLoader import os, mysql.connector, stripe, json, jsonify from dotenv import load_dotenv load_dotenv() stripe.api_key = os.environ['stripe_key'] app = Flask(__name__)
Dockerfile
FROM python:3.12-alpine EXPOSE 5000/tcp WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY app.py . CMD [ "python", "./app.py" ]
containers.json
{ "flask": { "image": ":flask-service.flask-container.5", "ports": { "5000": "HTTP" }, "Environment": ["stripe_key"] } }
public-endpoints.json
{ "containerName": "flask", "containerPort": 5000 }
requirements.txt
Flask==3.0.0; python_version > '3.6' Flask==2.3.3; python_version < '3.7' Werkzeug==3.0.1; python_version > '3.6' Werkzeug==2.3.7; python_version < '3.7' gunicorn==20.1.0 python-dotenv==1.0.1 stripe==7.13.0 jsonify==0.5
已尝试的操作
- 本地执行
python app.py运行正常,可正常导航并访问Stripe托管页面,说明本地stripe_key有效。 - 尝试通过命令行加载.env文件:
docker run --env-file .env -p 5000:5000 flask-container,命令行无错误,但访问localhost:5000时浏览器显示local host didn't send any data及ERR_EMPTY_RESPONSE。 - 更新containers.json后再次执行
docker run -p 5000:5000 flask-container,仍出现相同的stripe_key错误。
核心疑问:生产环境中如何正确配置环境变量以解决该问题?
内容的提问来源于stack exchange,提问作者Krabs
相关产品推荐
相关产品推荐

