2015-04-03 8 views
8

Ich verwende Docker, um einen bestimmten Nginx-Container mit SSL zu erstellen.Gibt es eine Möglichkeit, während des Docker-Build-Prozesses eine Eingabeaufforderung hinzuzufügen?

Aber ich möchte nicht, dass meine SSL-Dateien in meinem Versionsverwaltungssystem beibehalten werden. Daher sind sie verschlüsselt. Beim Erstellen eines Andock-Containers benötige ich das Passwort, um die Dateien zu entschlüsseln und meine nginx-Konfiguration zu testen.

Ich verwende read eine Aufforderung in meinem Installationsskript zu erhalten, aber Docker stoppt einfach auf die Aufforderung:

+ echo 'Please enter the password for the SSL certificates: ' 
+ read -s SSL_PASSWORD 
INFO[0008] The command [/bin/sh -c /build/setup.sh && /build/cleanup.sh] returned a non-zero code: 1 

Gibt es irgendeine Art und Weise eine Aufforderung zu erhalten, wenn ein docker build tun?

Vielen Dank für Ihre Hilfe :)

+0

Tools wie erwarten kann helfen, siehe http://expect.sourceforge.net/ – user2915097

+0

@ user2915097 Nun, wenn ich 'expect' richtig verstehe, speichert es die Aktionen, die Sie tun und" spielt "sie wieder. Aber, ** ich möchte nicht ** mein Passwort in ein Skript schreiben, oder die Verschlüsselung wäre völlig nutzlos. Es ** muss ** durch eine Aufforderung erfolgen. – achedeuzot

+0

Mein schlechtes, was ich sagte, ist richtig für 'autoexpect'. Aber das Problem ist, dass mein 'DockerBuild' in einer VM (boot2docker) läuft, also weiß ich nicht, ob das, was ich versuche, überhaupt möglich ist. – achedeuzot

Antwort

3

Nun, nachdem sich suchend um, es nicht Art und Weise ist eine Aufforderung während eines docker build zu haben. Es wurde entwickelt, um vollständig automatisiert zu sein.

Ich werde diesen Schritt während der docker run dann tun.

Dank einer gewissen larsks auf der IRC#docker Gruppe, gibt es eine interessante Lektüre über diese Themen bei https://github.com/GoogleCloudPlatform/kubernetes/issues/2030

Dank für die Unterstützung aus!

0

Verwenden Sie den Befehl expect so, als würde er von einer Befehlszeile ausgeführt. COPY Skript vom Docker-Host erwarten und ausführen.

+0

Das könnte funktionieren, aber wenn es um Passwörter und andere sensible Daten geht, die Sie nicht in einem Skript haben wollen, löst es nicht wirklich das Problem (cf erste Kommentare, die bereits vorschlagen 'expect' und' autoexpect'). Sie müssen immer noch das Passwort in das Skript eingeben, was eine schlechte Idee ist. Aber es könnte in einigen Fällen nützlich sein ... – achedeuzot