2017-11-23 4 views
0

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:

Ich möchte wirklich Docker Build-Argumente anstelle von Umgebungsvariablen bleiben, so dass die Werte nicht in den Umgebungsvariablen des Containers gespeichert werden.

Antwort

0

Facepalm ♀️ - Dies funktioniert perfekt. Ich stellte das Argument unter den falschen Dienst in meiner docker-compose.yaml Datei. Ich werde dies hier als Referenz, wie man die .env Datei mit Docker Build-Argumente verwenden - und als Erinnerung für mich selbst, dass ich ein Idiot bin. Es ist mir peinlich - 100 SOF Reputation