Sto cercando di creare un'immagine in Docker che richiede alcuni file segreti per eseguire operazioni come il recupero da un repository privato di git. Ho visto un sacco di gente con il codice come questo:Accesso ai segreti/file privati necessari per la creazione in Dockerfile?
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
Anche se funziona, significa che devo conservare il mio id_rsa privato con la mia immagine, che mi sembra una cattiva idea. Quello che preferirei fare è conservare i miei file segreti in alcuni cloud storage come s3, e passare semplicemente le credenziali come variabili di ambiente per essere in grado di trascinare tutto il resto.
So che posso passare le variabili di ambiente in docker run
con lo switch -e
, ma se ho bisogno di alcuni file in fase di compilazione (come id_rsa per eseguire un clone git), cosa posso fare? Idealmente sarei in grado di passare le variabili di ambiente a docker build
, ma non è possibile (non riesco a capire perché).
Quindi, idee? Qual è la cosa canonica/corretta da fare qui? Non posso essere la prima persona con questo problema.
possibile duplicato di [Docker e password di protezione] (http://stackoverflow.com/questions/22651647/docker-and-securing-passwords) –
Perché è necessario clonare il repository durante la creazione del contenitore? Non puoi avere quei file già presenti localmente? In questo modo ti sbarazzi del problema con i file segreti e non hai bisogno di installare git sull'immagine –
@ AbelMuiño il repository verrà aggiornato indipendentemente da Docker, quindi su ogni nuova immagine, vogliamo sempre la versione più recente di il pronti contro termine.La clonazione di un repository locale e il fatto che questi file siano separatamente parte dell'immagine causerà più lavoro nel dover aggiornare costantemente il repository e vanificherà lo scopo dell'utilizzo di Git in primo luogo. – Eli