Ich versuche, ein Bild in Docker zu bauen, das einige geheime Dateien benötigt, um Dinge wie das Ziehen von einem privaten Git Repo zu tun. Ich habe eine Menge Leute mit Code wie folgt gesehen:Zugriff auf Secrets/Private Dateien, die zum Erstellen in Dockerfile benötigt werden?
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
RUN git clone [email protected]:some/repo.git /usr/local/some_folder
Obwohl das funktioniert, es bedeutet, dass ich mit meinem Bild meines privaten id_rsa speichern, die mich als schlechte Idee trifft. Was ich lieber tun würde, ist, meine geheimen Dateien in einem Cloud-Speicher wie s3 zu behalten und Anmeldeinformationen einfach als Umgebungsvariablen weiterzuleiten, um alles andere nach unten ziehen zu können.
Ich weiß, dass ich Umgebungsvariablen in docker run
mit dem -e
Schalter übergeben kann, aber wenn ich einige Dateien zur Build-Zeit brauche (wie die id_rsa einen Git-Klon ausführen), was kann ich tun? Im Idealfall könnte ich Umgebungsvariablen an docker build
übergeben, aber das ist nicht möglich (ich kann nicht verstehen, warum).
Also, Ideen? Was ist die kanonische/korrekte Sache hier zu tun? Ich kann nicht die erste Person mit diesem Problem sein.
möglich Duplikat von [Docker und Sichern von Passwörtern] (http://stackoverflow.com/questions/22651647/docker-and-securing-passwords) –
Warum müssen Sie die Repos beim Erstellen des Containers klonen? Können Sie diese Dateien nicht schon lokal haben? Auf diese Weise werden Sie das Problem mit geheimen Dateien los und müssen Git auf dem Bild –
@ AbelMuiño nicht installiert werden das Repo wird unabhängig von Docker aktualisiert werden, so auf jeden neuen Image-Build, wollen wir immer die neueste Version von das Repo.Wenn Sie ein Repo lokal klonen und diese Dateien separat im Bild haben, müssen Sie den Repo ständig aktualisieren und den Einsatz von Git zunichte machen. – Eli