AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1097248
Accepted
David
David
Asked: 2022-03-29 14:20:48 +0800 CST2022-03-29 14:20:48 +0800 CST 2022-03-29 14:20:48 +0800 CST

如何将 .env 文件调用到在 K8s 服务器上的 Docker 容器中运行的 Django 项目中?

  • 772

我很可能只需要一个正确方向的提示。

我有一个使用 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

作为本地文件。

如果可能的话,我宁愿不使用全局环境变量。

感谢您的任何建议。

django python docker kubernetes github
  • 2 2 个回答
  • 139 Views

2 个回答

  • Voted
  1. Best Answer
    mforsetti
    2022-04-03T04:04:24+08:002022-04-03T04:04:24+08:00

    稍后,这个 docker 镜像被用于在 Kubernetes 上运行。

    使用[1]将.env文件存储为:Secretkubectl

    kubectl create secret generic app-env --from-file=.env=/path/to/your/.env
    

    然后您可以在定义[2]、[3]中将其挂载Secret为卷:Pod

    ---
    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        ...
      - name: app
        image: your-image:tag
        volumeMounts:
        - name: app-env-vol            # mount volume name
          mountPath: /opt/app/app      # to /opt/app/app
          readOnly: true               # as read-only
        ...
      volumes:
        ...
      - name: app-env-vol              # create app-env volume
        secret:
          secretName: app-env          # with secret name.
        ...
    

    您的应用程序应该能够访问它env的 s in /opt/app/app/.env。

    • 1
  2. philn5d
    2022-03-31T20:04:16+08:002022-03-31T20:04:16+08:00

    使用wget或云提供商 cli 命令在运行时将其拉下。

    您必须使用某种身份验证机制在“配置文件存储”中保护它,例如 IAM 和安全存储桶。或者您的配置存储也应该接受文件。

    mv将文件放入适当的 opt 目录。

    • -2

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • 哪个 Apache 包最适合 mod_wsgi Django 应用程序?

  • 设置 Django 服务器以服务多个站点的最佳方式是什么?

  • 哪个最适合 Django?Lighttpd 还是 Nginx?或者也许是别的什么?[关闭]

  • 如何向运行共享 IIS 服务器的 Python 新手解释 Django/Python 安装 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve