Come Pacchetto dell’Applicazione di Infrastrutture, con Mobile

0
29

Mobile è un modo per applicazioni di imballaggio e di tutte le loro dipendenze necessarie e di configurazione in una singola immagine. Essenzialmente, questo trasforma il vostro server di configurazione in qualcosa che può essere gestito con git e sincronizzate su ogni macchina.

Ciò che È Mobile, e Perché È Utile?

Mobile rende molto più facile gestire la sua produzione di configurazione del server. Invece di impostare manualmente i server, è possibile automatizzare l’intero processo di essere eseguito quando si genera il contenitore dell’immagine.

Questa immagine sarà lo stesso per tutti i membri del team, in modo sarete in grado di eseguire immediatamente la tua app con tutte le dipendenze richieste gestito. Questo risolve anche il classico “non funziona sulla mia macchina” problema, perché la finestra Mobile di immagini di eseguire le stesse ovunque.

Questa immagine può anche essere facilmente distribuiti e corse su una flotta di server molto poco impatto sulle prestazioni. Perché la finestra Mobile non è una macchina virtuale, non hanno a che fare con il sovraccarico di un sistema operativo guest per ogni applicazione. Questo li rende a buon mercato e abbastanza scalabile.

Per ulteriori informazioni sulla finestra Mobile, e se o non si dovrebbe utilizzare per la vostra applicazione, potete leggere la nostra composizione di se o non vale la pena il mal di testa. Per ora, supponiamo che tu sei pronto per iniziare, e immergetevi in dettagli tecnici.

Creare un Dockerfile

Il punto di accesso per la compilazione del contenitore è chiamato un Dockerfile. Creare una nuova directory del progetto per la casa del tuo file, quindi creare un nuovo Dockerfile semplicemente denominato Dockerfile senza estensione:

toccare Dockerfile

Aprire il file nel vostro editor di testo preferito.

Probabilmente non si desidera iniziare tutto da zero, in modo che si può forcella di un’immagine, la finestra Mobile Hub, come Ubuntu:

DA ubuntu

Nota che, anche se dovrete fare tutto DA zero.

Durante il processo di generazione, Mobile crea un modificabili “strato” che si può costruire sulla cima. È permesso copiare i file ed eseguire i comandi come se fossero in esecuzione sulla macchina, in maniera simile a come si dovrebbe andare su impostazione di un server manualmente. Potete fare tutti i vostri server di installazione in questo file, in sostanza, automatizzando il processo che ci passano attraverso, se è sparato un vuoto Linux ed è stato detto di portare in produzione. Questo può essere un processo che richiede tempo.

È possibile eseguire la maggior parte di questi comandi dalla riga di comando e impostare l’immagine manualmente. Se si desidera ottenere una shell bash in un contenitore, è possibile eseguire:

mobile exec -it <contenitore> /bin/bash

E salvare le modifiche con:

mobile commit <contenitore> <nome>

Tuttavia, si dovrebbe usare solo questo per il test, e non tutte le configurazione attuale in un Dockerfile.

Dockerfile Comandi

Andremo attraverso i più comuni comandi, e di spiegare il loro utilizzo e le migliori pratiche da applicare per loro. Per di più esteso di riferimento, è possibile consultare questo sheets, o di consultare le “Migliori Pratiche Per la Scrittura Dockerfiles” docs voce.

COPIA

L’istruzione di COPIA è abbastanza semplice: permette di popolare la finestra Mobile di immagine con i dati e la configurazione.

COPIA <sorgente> <destinazione>

Per esempio, se si ha una cartella nella directory del progetto denominato /config/nginx/ che conteneva il nginx.conf, sites-available/ e di altre directory, è possibile copiare che di default nginx config posizione nel contenitore:

COPIA /config/nginx/ /etc/nginx/

In questo modo, è possibile mantenere tutti i vostri file di configurazione di nginx nella stessa directory del progetto, come tutto il resto, nel senso che sarà sotto controllo di versione git, insieme al resto del codice.

ESEGUIRE

L’ESECUZIONE di istruzioni viene eseguito un comando nel contenitore, e salva le modifiche apportate al contenitore del filesystem.

ESEGUIRE il comando

Ogni esecuzione del comando crea un nuovo “livello”, quindi è probabile che tu vuoi fare complicata installazione all’interno di uno script di installazione. Dovrete copiare questo script per l’immagine, e quindi eseguirlo:

COPIA install.sh .
ESEGUIRE ./install.sh

All’interno di questo script, sei libero di fare qualsiasi configurazione di cui avete bisogno, tra cui l’installazione di programmi da apt.

Se volete ridurre il vostro contenitore, i tempi di costruzione, è possibile creare un contenitore di base con tutti i programmi necessari già installati, quindi costruire il vostro contenitore principale DA tale contenitore, anche se poi dovrai gestire le dipendenze e la configurazione separatamente.

CMD

CMD definisce il file eseguibile utilizzato da contenitore all’avvio se non diversamente specificato. In questo modo potrete caricare le app una volta che tutto è completato.

CMD eseguibile

Solo l’ultimo comando CMD ha effetto. È possibile ignorare il comando in avvio con la seguente sintassi:

mobile eseguire contenitore eseguibile [args]

Punto di ingresso

Punto di ingresso è una versione speciale del CMD che permette il contenitore per eseguire un file eseguibile. Per esempio, se tutti i il contenitore non viene eseguito nginx, è possibile specificare nginx come il punto di accesso:

Punto di ingresso nginx

E quindi eseguire il container sulla riga di comando, passando in argomenti come argomenti il punto di accesso:

mobile eseguire container [args]

ESPORRE

Esporre i marchi di alcuni container porte aperte per l’esecuzione di host. Per esempio, se si esegue un server web, è probabile che si desidera

ESPORRE 80

Questo non associare la porta in modo automatico, ma informa la finestra Mobile di runtime che la porta è disponibile. Effettivamente si legano, si desidera utilizzare l’opzione-P (maiuscola) senza argomenti per associare tutte esposte le porte.

Esegue L’Applicazione

In primo luogo, avrete bisogno di costruire la vostra immagine:

mobile build-t contenitore .

È possibile eseguire il vostro contenitore con pannello di esecuzione:

mobile eseguire contenitore

Tuttavia, questo non è troppo utile in proprio, becaue non c’è modo di interagire con esso. Per farlo, dovrete associare le porte che utilizza l’opzione-p, in questo modo:

mobile run-p 3000:80 nginx

Questo viene eseguito il nginx contenitore e lega il contenitore HTTP uscita per la porta 3000 sulla macchina locale.

Tuttavia, con una configurazione standard dovrete ricostruire il Mobile contenitore ogni volta che si apportano modifiche alla vostra applicazione. Questo è ovviamente molto meno ideale, ma per fortuna ci sono modi per aggirare questo. Un modo è quello di montare un volume nel contenitore di forma in tempo reale collegamento tra il contenitore e il sistema operativo host (dove stai facendo il tuo sviluppo). Per esempio, se il tuo codice HTML è in src/html/ cartella Mobile directory del progetto, è possibile montare /usr/local/nginx/html/ con:

mobile run-p 80:80 -v ./src/html/:/usr/local/nginx/html:ro container

Il “ro” bandiera assicura che questo collegamento è di sola lettura, in modo che il Mobile contenitore non può apportare modifiche al sistema operativo host. Questo può anche essere usato per permettere Mobile contenitori per accedere persistente i dati memorizzati sul sistema host.