Puncte:0

Cum se invocă un fișier .env într-un proiect Django care rulează într-un container Docker pe un server K8s?

drapel es

Cel mai probabil am nevoie doar de un indiciu în direcția corectă.

Am un container docker care rulează o aplicație Django folosind gunicorn și nginx. Această aplicație Django primește în prezent variabilele de mediu dintr-un fișier .env.

DIN python:alpin
EXPUNERE 8000

RUN actualizare apk
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
COPIE . .
RUN python3 -m pip install /root/d12f/

RUN pip3 install -r requirements.txt
RUN pip3 instalează 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 - '

Desigur, nu există niciun fișier .env în repo, deoarece acesta ar fi un risc de securitate.

Imaginea Docker este creată de github și stocată într-un pachet privat GitHub. Mai târziu, această imagine Docker este folosită pentru a rula pe Kubernetes.

Încerc să găsesc cea mai bună soluție pentru a pune un fișier .env în

/opt/app/app/.env

ca fișier local.

Aș prefera să nu folosesc variabile de mediu globale, dacă este posibil.

Multumesc pentru orice sugestie.

Puncte:1
drapel tz

Mai târziu, această imagine Docker este folosită pentru a rula pe Kubernetes.

Păstrați-vă .env dosar ca a Secret cu kubectl [1]:

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

Apoi puteți monta Secret ca un volum în dvs Pod definiție [2], [3]:

---
apiVersion: v1
fel: Pod
...
specificație:
  containere:
    ...
  - nume: aplicație
    imagine: imaginea ta:etichetă
    volumMonturi:
    - nume: app-env-vol # mount volum nume
      mountPath: /opt/app/app # la /opt/app/app
      readOnly: true # ca doar citire
    ...
  volume:
    ...
  - nume: app-env-vol # creați volumul app-env
    secret:
      secretName: app-env # cu nume secret.
    ...

Aplicația dvs. ar trebui să poată accesa ea învs in /opt/app/app/.env.

Puncte:-2
drapel cn

Utilizare wget sau o comandă cli a furnizorului de cloud pentru a o trage în jos în timpul execuției.

Trebuie să utilizați un mecanism de autentificare pentru a-l proteja în „magazinul de fișiere de configurare”, de exemplu IAM și un Bucket securizat. Sau magazinul dvs. de configurare ar trebui să accepte și fișiere.

mv fișierul în directorul opt corespunzător.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.