2014-06-20 34 views
13

Desidero utilizzare un Dockerfile per creare un'immagine. Tuttavia, i comandi avranno bisogno di input da parte dell'utente durante l'esecuzione. Attualmente, la compilazione non ha esito positivo perché la finestra mobile viene chiusa in base all'input dell'utente. So che posso usare le opzioni -i -t sul comando docker run ma voglio farlo su un Dockerfile. Come è possibile?build docker interattivo da dockerfile?

+0

Dipende da quale userinput, se è userinput per apt-get update come esempio, quindi è possibile aggiungere -y per dire sempre sì. Altrimenti, esegui qualcosa che richiede userinput, salvalo in una variabile di ambiente e quindi estrailo dalle variabili di ambiente. –

+0

Sto eseguendo 'rvmsudo passenger-install-nginx-module'. Non sono sicuro che la tua raccomandazione si applichi qui. – Keeto

+1

In tal caso, vorrei creare un'immagine di base con quei moduli già installati (inserendo manualmente i dati necessari), quindi creare file Docker usando quella nuova immagine. Sono curioso di vedere se esiste un modo generico per risolverlo se lo script che stai eseguendo non supporta l'installazione automatica ... –

risposta

6

Puoi provare con expect o uno strumento simile.

Il modo più semplice per configurarlo è utilizzare lo strumento autoexpect, che consente di eseguire i comandi in modo interattivo e crea uno script di previsione per te.

Non riesco a far funzionare il rvmsudo (non l'ho usato e non ho voluto passare troppo tempo con esso) quindi ho deciso di usare vi invece. Prima esecuzione autoexpect

$ autoexpect vi test 

Si aprirà vi ed è possibile creare o modificare il file e salvarlo. Dopo essere usciti dallo vi vedrai il tuo file test e uno script previsto script.exp.

È quindi possibile rimuovere il file di test ed eseguire script.exp. Ricreerà lo stesso file utilizzando gli stessi passaggi.

Lo strumento di autoexpect è ottimo, ma potrebbe essere necessario creare uno script da zero se è necessario avere maggiore controllo su ciò che accade. Per esempio. se non si desidera che lo script funzioni con l'input previsto esatto.

+2

Devo amare i downvoters, che non commentano cosa c'è che non va nella risposta. Saluti a te! – ivant

Problemi correlati