我很可能只需要一个正确方向的提示。
我有一个使用 gunicorn 和 nginx 运行 Django 应用程序的 docker 容器。此 Django 应用程序当前正在从 .env 文件中获取其环境变量。
FROM python:alpine
EXPOSE 8000
RUN apk update
RUN apk add --no-cache git gcc musl-dev libffi-dev libxml2-dev libxslt-dev gcc swig g++
RUN apk add --no-cache jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff- dev tk-dev tcl-dev
RUN apk add --no-cache bash ffmpeg libmagic
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --upgrade setuptools
RUN mkdir /opt/app
WORKDIR /opt/app
COPY . .
RUN python3 -m pip install /root/d12f/
RUN pip3 install -r requirements.txt
RUN pip3 install gunicorn
CMD sh -c 'gunicorn --conf python:app.gunicorn_conf app.wsgi --bind 0.0.0.0:8000 --reload --log-level info --access-logfile - --timeout 360 --error-logfile -'
当然,repo 中没有 .env 文件,因为这会带来安全风险。
Docker 映像由 github 创建并存储在私有 GitHub 包中。稍后,这个 docker 镜像被用于在 Kubernetes 上运行。
我正在尝试找到将 .env 文件放入的最佳解决方案
/opt/app/app/.env
作为本地文件。
如果可能的话,我宁愿不使用全局环境变量。
感谢您的任何建议。
使用[1]将
.env
文件存储为:Secret
kubectl
然后您可以在定义[2]、[3]中将其挂载
Secret
为卷:Pod
您的应用程序应该能够访问它
env
的 s in/opt/app/app/.env
。使用
wget
或云提供商 cli 命令在运行时将其拉下。您必须使用某种身份验证机制在“配置文件存储”中保护它,例如 IAM 和安全存储桶。或者您的配置存储也应该接受文件。
mv
将文件放入适当的 opt 目录。