Come usare MySQL con Docker-Compose

30 gen 2024 3 min di lettura
Come usare MySQL con Docker-Compose
Indice dei contenuti

Introduzione

Nel campo dello sviluppo software e della gestione dei database, l'integrazione di MySQL con Docker Compose ha rivoluzionato il modo in cui gestiamo i database in ambienti containerizzati. Questo articolo fornisce una guida completa sull'utilizzo efficace di MySQL con Docker Compose, enfatizzando l'uso dello script docker-entrypoint-initdb.d , implementando l'archiviazione persistente e personalizzando la configurazione my.cnf .

Perché utilizzare MySQL con Docker?

Coerenza: i contenitori Docker garantiscono che MySQL venga eseguito allo stesso modo, indipendentemente da dove viene distribuito.
Isolamento: ogni istanza MySQL viene eseguita nel proprio contenitore, isolata dal sistema host e da altri contenitori.
Scalabilità: ridimensiona facilmente i tuoi database MySQL gestendo più contenitori con Docker Compose.

Passaggio 1: definizione del file Docker Compose

Crea un file docker-compose.yml nella directory del tuo progetto. Questo file definisce il servizio MySQL e le sue configurazioni.


version: '3.8'

services:
  db:
    image: mysql:8
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secure_password
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: password
    ports:
      - "13306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
      - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
      - ./db/my.cnf:/etc/mysql/my.cnf

volumes:
  mysql_data:

Passaggio 2: utilizzo dello script docker-entrypoint-initdb.d

La directory docker-entrypoint-initdb.d è una posizione speciale nell'immagine MySQL. Gli script e i file SQL inseriti in questa directory vengono eseguiti automaticamente durante il primo avvio del contenitore. Questa funzionalità è fondamentale per inizializzare un database con uno schema o set di dati predefiniti.

  1. Crea una directory "initdb" nella cartella del tuo progetto.
  2. Aggiungi i tuoi script SQL o script di inizializzazione all'interno di questa directory.
  3. Questi script verranno eseguiti in ordine alfabetico al primo avvio del contenitore.

Passaggio 3: implementazione dell'archiviazione persistente

L'archiviazione persistente è essenziale per conservare i dati del database anche dopo l'arresto o l'eliminazione del contenitore Docker. Nel file docker-compose.yml, la riga seguente raggiunge questo obiettivo:

volumes:
  - db_data:/var/lib/mysql

Questa riga specifica un volume denominato ( db_data) che garantisce la persistenza dei dati. Quando il contenitore MySQL viene arrestato o riavviato, i dati rimangono intatti in questo volume.

Passaggio 4: personalizzazione della configurazione my.cnf

Personalizzare la configurazione di MySQL è semplice con Docker. Per utilizzare un my.cnf personalizzato:

Crea un file my.cnf nella directory del tuo progetto con le tue configurazioni personalizzate.

Monta questo file nel contenitore aggiungendo la seguente riga al tuo servizio nel file docker-compose.yml:

volumes:
  - ./my.cnf:/etc/mysql/my.cnf

Questa riga mappa il tuo file my.cnf locale a quello all'interno del contenitore, permettendoti di modificare le configurazioni MySQL secondo necessità.

Passaggio 5: esecuzione e gestione del contenitore MySQL

Dopo aver configurato tutto, esegui il tuo contenitore MySQL utilizzando Docker Compose:

docker-compose up -d 

Questo comando avvia la tua istanza MySQL in modalità distaccata. Per arrestare il contenitore, utilizzare docker-compose down.

Passaggio 6: connettersi al server MySQL

Per connetterti al database MySQL all'interno di un contenitore Docker utilizzando il comando docker exec, dovrai prima scoprire il nome o l'ID del tuo contenitore MySQL in esecuzione. Puoi quindi utilizzare docker exec per eseguire il client MySQL all'interno di questo contenitore, che ti consente di connetterti direttamente al server MySQL. Ecco come puoi farlo:

Elenca i contenitori in esecuzione : innanzitutto identificare il contenitore che esegue MySQL. Puoi elencare tutti i contenitori in esecuzione utilizzando:

docker ps 

Cerca il contenitore che esegue MySQL (nel tuo caso, dovrebbe essere chiamato qualcosa come db o avere mysql nel nome dell'immagine).

Connettiti al contenitore MySQL : utilizza docker exec per avviare una sessione client MySQL all'interno del contenitore. Il formato del comando è:

docker exec -it [container_name_or_id] mysql -u[username] -p


Per la tua configurazione, supponendo che il nome del tuo contenitore sia db e che desideri connetterti come root, il comando sarebbe:

docker exec -it db mysql -uroot -p

Ti verrà richiesto di inserire la password. Per l'utente root, secondo il tuo docker-compose.ymlfile, è secure_password.

Interagisci con MySQL : dopo aver effettuato l'accesso, puoi eseguire qualsiasi comando MySQL per gestire database, tabelle e dati.

Conclusione

L'integrazione di MySQL con Docker Compose fornisce un approccio semplificato alla gestione dei database relazionali in un ambiente containerizzato. Sfruttando lo script docker-entrypoint-initdb.d, implementando l'archiviazione persistente e personalizzando il file my.cnf, puoi gestire e ridimensionare in modo efficace i tuoi database MySQL con facilità e precisione. Questa configurazione non solo semplifica i flussi di lavoro di sviluppo, ma migliora anche la portabilità e la scalabilità delle tue applicazioni.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.