Ich habe ein seltsames Problem mit Docker-Compose .env
Datei. Ich kann den ersten variablen Schlüssel = Paar in meiner .env-Datei verwenden, aber nur die erste Variable. Dies ist meine OrdnerstrukturMehrere Docker bauen Args von Docker-komponieren .env-Datei
|- root
| |- .env
| |- docker-compose.yaml
| |- service-1
| |- Dockerfile
.env:
GIT_TOKEN=c3e13c4e33935
DB_PWD=mypassword
Docker-compose.yaml:
version: '3'
web-server:
container_name: service-1
image: sdc/service-1:0.1
build:
context: ./service-1
args:
- GIT_TOKEN=$GIT_TOKEN
- DB_PWD=$DB_PWD
Service-1/Dockerfile:
FROM node:boron
ARG GIT_TOKEN
ARG DB_PWD
RUN git clone https://${GIT_TOKEN}@github.com/chrxn/sdc.git
RUN echo {"database_password:" $DB_PWD } > crews.txt
Das Problem ist, dass die Variable GIT_TOKEN perfekt funktioniert , aber die Variable DB_PWD ist nicht. Auch wenn die Variable GIT_TOKEN in die Echozeile eingefügt wird, wird das Token in einer Datei gespeichert (daher weiß ich, dass es sich nicht um ein Echo/Bash-Interpolationsproblem handelt). Jede Hilfe wird sehr geschätzt. Ich habe alles gelesen, was ich bezüglich der Umgebungsvariablen von Docker finden kann.
HINWEIS: Ich habe ein paar Dinge geändert. Meine Datenbank ist kein Passwort meinkennwort und das ist keine echte git Repo
Referenzen:
- .env file
- ARG
- Similar example but setting container environment variables
- False issue raised because .env and env_file is so confusing
- combine ARG and ENV
Ich möchte wirklich Docker Build-Argumente anstelle von Umgebungsvariablen bleiben, so dass die Werte nicht in den Umgebungsvariablen des Containers gespeichert werden.