2016-08-04 4 views
0

Hier ist der Teil des Codes der ARG Aufruf:Warum wird das ARG meiner Dockerfile nicht erweitert?

RUN \ 
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add - && \ 
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list && \ 
apt-get update && \ 
DEBIAN_FRONTEND=noninteractive apt-get install -y rabbitmq-server && \ 
rm -rf /var/lib/apt/lists/* && \ 
rabbitmq-plugins enable rabbitmq_management && \ 
echo '[{rabbit, [{loopback_users, []}, {default_user,<<"${RABBITMQ_USER}">>}, {default_pass,<<"${RABBITMQ_PASSWD}">>}]}].' > /etc/rabbitmq/rabbitmq.config 

Notiere die RABBITMQ_PASSWD und RABBITMMQ_USER args

Vor diesem Stück Code, ich dies der Dockerfile zu Beginn erklärt:

FROM ubuntu:14.04 
ARG RABBITMQ_USER=123 
ARG RABBITMQ_PASSWD=123 

Und es funktioniert immer noch nicht. Im Docker-Bild gibt ${RABBITMQ_USER} wörtlich zurück.

Antwort

1

Nichts ist falsch mit ARG Befehl. Sie versuchen, Variable in einem einzelnen Anführungszeichen in einem Bash-Befehl zu erweitern, was nicht möglich ist.

Expansion of variable inside single quotes in a command in bash shell script

Alles, was Sie tun müssen, ist doppelte Anführungszeichen zu verwenden und inneren Anführungszeichen zu entkommen wie folgt.

echo "[{rabbit, [{loopback_users, []}, {default_user,<<\"${RABBITMQ_USER}\">>}, {default_pass,<<\"${RABBITMQ_PASSWD}\">>}]}]." > /etc/rabbitmq/rabbitmq.config 
Verwandte Themen