Back to "Uso di Docker Compose per le dipendenze di sviluppo"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

Docker

Uso di Docker Compose per le dipendenze di sviluppo

Friday, 09 August 2024

Introduzione

Nello sviluppo di software tradizionalmente facevamo girare un database, una coda di messaggi, una cache, e forse qualche altro servizio. Questo può essere un dolore da gestire, soprattutto se si sta lavorando su più progetti. Docker Compose è uno strumento che consente di definire ed eseguire applicazioni Docker multi-container. È un ottimo modo per gestire le vostre dipendenze di sviluppo.

In questo post, vi mostrerò come usare Docker Compose per gestire le vostre dipendenze di sviluppo.

Prerequisiti

Per prima cosa dovrai installare docker desktop su qualsiasi piattaforma tu stia usando. Puoi scaricarlo da qui.

NOTA: Ho trovato che su Windows è davvero necessario eseguire Docker Desktop installazione come amministratore per assicurarsi che si installa correttamente.

Creazione di un file di composizione Docker

Docker Compose utilizza un file YAML per definire i servizi che si desidera eseguire. Ecco un esempio di un semplice devdeps-docker-compose.yml file che definisce un servizio di database e un servizio di posta elettronica:

services: 
  smtp4dev:
    image: rnwood/smtp4dev
    ports:
      - "3002:80"
      - "2525:25"
    volumes:
      # This is where smtp4dev stores the database..
      - e:/smtp4dev-data:/smtp4dev
    restart: always
  postgres:
    image: postgres:16-alpine
    container_name: postgres
    ports:
      - "5432:5432"
    env_file:
      - .env
    volumes:
      - e:/data:/var/lib/postgresql/data  # Map e:\data to the PostgreSQL data folder
    restart: always	
networks:
  mynetwork:
        driver: bridge

Nota qui Ho specificato i volumi per la persistenza dei dati per ogni servizio, qui ho specificato

    volumes:
      # This is where smtp4dev stores the database..
      - e:/smtp4dev-data:/smtp4dev
    volumes:
        - e:/data:/var/lib/postgresql/data  # Map e:\data to the PostgreSQL data folder

Ciò assicura che i dati persistano tra le corse dei contenitori.

Ho anche specificato un env_file per la postgres servizio. Questo è un file che contiene variabili d'ambiente che vengono passate al contenitore. Puoi vedere un elenco di variabili d'ambiente che possono essere passate al contenitore PostgreSQL qui. Ecco un esempio di .env file:

POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<somepassword>

Questo configura un database predefinito, una password e un utente per PostgreSQL.

Qui eseguisco anche il servizio SMTP4Dev, questo è un ottimo strumento per testare le funzionalità email nella tua applicazione. Puoi trovare maggiori informazioni al riguardo qui.

Se guardi nel mio... appsettings.Developmet.json file che vedrete Ho la seguente configurazione per il server SMTP:

  "SmtpSettings":
{
"Server": "localhost",
"Port": 2525,
"SenderName": "Mostlylucid",
"Username": "",
"SenderEmail": "[email protected]",
"Password": "",
"EnableSSL": "false",
"EmailSendTry": 3,
"EmailSendFailed": "true",
"ToMail": "[email protected]",
"EmailSubject": "Mostlylucid"

}

Questo funziona per SMTP4Dev e mi permette di testare questa funzionalità (Posso inviare a qualsiasi indirizzo, e vedere l'e-mail nell'interfaccia SMTP4Dev all'indirizzo http://localhost:3002/).

Una volta che sei sicuro che è tutto funzionante è possibile testare su un vero server SMTP come GMAIL (ad esempio, vedere qui per come farlo)

Gestire i servizi

Per eseguire i servizi definiti nel devdeps-docker-compose.yml file, è necessario eseguire il seguente comando nella stessa directory del file:

docker compose -f .\devdeps-docker-compose.yml up -d

Si noti che si dovrebbe eseguire inizialmente in questo modo; questo assicura di poter vedere gli elementi di configurazione passati dal .env Archivio.

docker compose -f .\devdeps-docker-compose.yml config

Ora se guardi in Docker Desktop puoi vedere questi servizi in esecuzione

Desktop Docker

logo

©2024 Scott Galloway