2016-04-25 19 views
0

Ich möchte ein Docker-Image erstellen, das meine Anwendungskonfiguration behält. Wenn sich etwas ändert, kann ich nur den Konfigurationscontainer ändern und muss kein neues Image für meine Anwendung erstellen.Docker "config" Container/Docker image

Hier ist meine Dockerfile:

FROM scratch 

RUN mkdir -p /config 

ADD config.properties /config 

VOLUME /config 

ENTRYPOINT /bin/true 

Aber es kann das Verzeichnis nicht einmal erstellen. Gibt es eine Best Practice für solche Dinge?

Antwort

2

Denken Sie daran, dass das Bild scratchbuchstäblich vollständig leer ist. Sie können das Verzeichnis nicht erstellen, da keine /usr/bin/mkdir ausführbare Datei in diesem Image vorhanden ist.

das Verzeichnis ohnehin erstellen, können Sie die Tatsache ausnutzen, dass die ADD-Anweisung in einer Dockerfile auch Verzeichnisse implizit erstellt, so dass die folgende Dockerfile genug sein soll:

FROM scratch 
ADD config.properties /config/config.properties 
VOLUME /config 

In Bezug auf die ENTRYPOINT; Es gibt auch keine /bin/true in Ihrem Bild. Dies bedeutet, dass der Container nicht startet (d. H. Sofort mit exec: "/bin/true": stat /bin/true: no such file or directory endet). Da Sie dieses Bild jedoch für einen reinen Datencontainer verwenden möchten, ist dies wahrscheinlich in Ordnung. Einfach docker create anstelle von docker run den Container erstellen ohne es zu starten:

docker build -t config_image . 
docker create --name config config_image 
+0

wenn ich tue 'Docker create --name Config config_image' als ich' Kein Befehl specified' – DK1990

+0

@ DK1990 zu erhalten, müssen Sie wahrscheinlich Verwenden Sie dann 'CMD/bin/true' anstelle von 'ENTRYPOINT/bin/true' in Ihrer Docker-Datei. – helmbert

Verwandte Themen