GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come utilizzare i profili di servizio per semplificare gli stack in Docker Compose

Docker Compose ora supporta i profili per l'uso selettivo dei servizi. Servizi nel tuo docker-compose.yml può essere collegato a uno o più profili con nome. Passaggio di un nome di profilo a docker-compose up avvierà solo i servizi in quel profilo, consentendoti di creare varianti del tuo stack per ambienti e configurazioni specifici.

Compose si è precedentemente concentrato sulla definizione di un singolo stack che è una distribuzione canonica della tua applicazione. I profili aggiungono più spazio per la personalizzazione delle parti dello stack da utilizzare, rendendo più modulari e configurabili insiemi complessi di servizi.

Perché usare i profili?

L'uso dei profili è del tutto facoltativo. I tuoi file Docker Compose esistenti continueranno a funzionare e non è necessario adottare profili immediatamente.

I profili di servizio risolvono diverse frustrazioni comuni con i flussi di sviluppo e test di Docker Compose. Potresti avere servizi che desideri utilizzare solo in fase di sviluppo, come un contenitore di debug o un servizio di registrazione. Quando sei in produzione, non hai bisogno di quei servizi e vuoi evitare di avviarli.

In precedenza, per raggiungere questo obiettivo era necessario suddividere le definizioni del servizio su più file. Avresti quindi bisogno di un ingombrante up comando per avviare tutto in fase di sviluppo:

# docker-compose.yml
version: "3"
services:
  app:
    image: my-app:latest
 
# docker-compose-dev.yml
version: "3"
services:
  debug:
    image: my-app-debug:latest
# start in production
docker-compose up -d

# start in development
docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d

I profili consentono di combinare entrambe le definizioni di servizio in un unico file. È possibile utilizzare un flag o una variabile di ambiente per selezionare un profilo specifico, senza digitare manualmente i percorsi dei file. Questo crea un'esperienza più conveniente che è meno seccante per documentare, scrivere ed eseguire.

Definizione dei profili

I profili vengono creati impostando i profiles campo sui servizi nel tuo docker-compose.yml . I profili sono specificati come un elenco. Ad ogni servizio possono essere assegnati uno o più profili.

version: "3"
services:
  app:
    image: my-app:latest
  debug:
    image: my-app-debug:latest
    profiles:
      - dev

Le istanze del profilo vengono create implicitamente dai nomi dati ai tuoi profiles campi. I servizi che condividono un profilo vengono automaticamente aggiunti.

Per avviare i servizi inclusi in un profilo, aggiungi il --profile contrassegnare per docker-compose up :

docker-compose up --profile dev

Questo comando avvierà sia l'app e debug servizi dal file Compose sopra. Se hai eseguito docker-compose up , omettendo il --profile flag, solo l'app il servizio partirebbe.

Puoi avviare più profili contemporaneamente ripetendo il --profile bandiera. Compose supporta anche il COMPOSE_PROFILES variabile di ambiente in alternativa a --profile . Questo accetta un elenco di nomi di profili separati da virgole.

Servizi senza profiles il campo verrà sempre avviato, indipendentemente dal profilo richiesto. Una volta che a un servizio è stato assegnato un profilo, verrà avviato solo se quel profilo è stato richiesto. Per i servizi con più profili, la richiesta di uno qualsiasi di essi consentirà l'avvio del servizio.

Inizio profilo implicito

I profili verranno sempre ignorati se avvii manualmente un servizio utilizzando docker-compose run . In questo caso, Compose avvierà anche tutti i servizi da cui dipende il servizio richiesto, se condividono un profilo o non hanno un profilo assegnato.

Qui, eseguendo docker-compose run debug avvierebbe debug-utils servizio, anche se dev il profilo non è stato selezionato in modo esplicito:

version: "3"
services:
  app:
    image: my-app:latest
  debug-utils:
    image: my-app-debug-utils:latest
    profiles:
      - dev
  debug:
    image: my-app-debug:latest
    depends_on: debug-utils
    profiles:
      - dev

Gli inizi impliciti si applicano solo ai dipendenti diretti del servizio specificato. Se debug-utils aveva anche un depends_on e quel servizio non condivideva dev profilo, non si avvierebbe correttamente.

Affinché la risoluzione delle dipendenze funzioni correttamente con docker-compose run , tutti i servizi nell'albero devono condividere un profilo del servizio più in alto o essere abilitati in modo permanente. Se nessuna di queste condizioni è valida, dovrai aggiungere il --profile flag per attivare esplicitamente eventuali profili aggiuntivi richiesti.

Riepilogo

I profili di servizio sono una comoda funzione di composizione che semplifica la gestione di diverse combinazioni di servizi. Utilizzando i profili, puoi evitare di dividere i servizi in più file Compose. Aggiunta di --profile di solito sembra più naturale che unire più file YAML insieme.

I profili ti consentono di creare sotto-stack all'interno della tua applicazione Compose principale. La loro introduzione come parte delle specifiche Compose è un riconoscimento del fatto che gli stack in fase di sviluppo spesso incorporano servizi aggiuntivi oltre a quelli utilizzati nella produzione.

Più in generale, i profili rendono Compose più versatile facilitando la personalizzazione dello stack. Sebbene siano concepiti come un approccio alla gestione dell'ambiente, i profili potrebbero anche aiutare la comunità a creare diverse varianti di immagini popolari. Pensa a un docker-compose.yml di WordPress con mysql e mariadb profili:ora puoi passare facilmente tra i servizi di database preconfigurati per selezionare il motore che corrisponde alle tue preferenze.

Docker Compose 1.28 ha introdotto i profili all'inizio di quest'anno. Se hai una versione recente del binario Compose o Docker Desktop per Windows e Mac, puoi aggiungere profiles ai tuoi file Compose per iniziare ad abilitare i servizi in modo selettivo.


Docker
  1. Come utilizzare il comando Systemctl per gestire i servizi Systemd

  2. Come usare Docker Compose

  3. Come utilizzare un Dockerfile per creare un'immagine Docker

  4. Come utilizzare i profili di servizio per semplificare gli stack in Docker Compose

  5. Come utilizzare il comando Ispeziona Docker

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 22.04

Che cos'è Docker Compose e come lo usi?

Come distribuire Docker Compose Stack su Kubernetes con Kompose

Come installare Docker Compose su Ubuntu

Come installare e utilizzare Docker Compose su Debian 11