NOTE: Apart from
(and even then it's questionable, I'm Scottish). These are machine translated in languages I don't read. If they're terrible please contact me.
You can see how this translation was done in this article.
Friday, 09 August 2024
//Less than a minute
Bij het ontwikkelen van software draaien we traditioneel een database, een berichtenwachtrij, een cache en misschien een paar andere diensten. Dit kan een pijn zijn om te beheren, vooral als je werkt aan meerdere projecten. Docker Compose is een hulpmiddel waarmee u multi-container Docker toepassingen te definiëren en uit te voeren. Het is een geweldige manier om je ontwikkeling afhankelijkheden te beheren.
In dit bericht, Ik zal u laten zien hoe u Docker Compose gebruiken om uw ontwikkeling afhankelijkheden te beheren.
Eerst moet je docker desktop installeren op welk platform je ook gebruikt. U kunt het downloaden van Hier..
OPMERKING: Ik heb gevonden dat op Windows je echt nodig hebt om Docker Desktop installer als admin te draaien om ervoor te zorgen dat het correct installeert.
Docker Compose gebruikt een YAML-bestand om de diensten te definiëren die u wilt uitvoeren. Hier is een voorbeeld van een simpele devdeps-docker-compose.yml
bestand dat een databasedienst en een e-maildienst definieert:
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
Notitie hier Ik heb opgegeven volumes voor het aanhouden van de gegevens voor elke dienst, hier heb ik gespecificeerd
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
Dit zorgt ervoor dat de gegevens tussen de ritten van de containers blijven bestaan.
Ik geef ook een env_file
voor de postgres
service. Dit is een bestand dat omgevingsvariabelen bevat die aan de container worden doorgegeven.
U kunt een lijst zien van omgevingsvariabelen die kunnen worden doorgegeven aan de PostgreSQL container Hier..
Hier is een voorbeeld van een .env
bestand:
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<somepassword>
Dit configureert een standaard database, wachtwoord en gebruiker voor PostgreSQL.
Hier heb ik ook de SMTP4Dev service, dit is een geweldige tool voor het testen van e-mail functionaliteit in uw toepassing. U kunt er meer informatie over vinden Hier..
Als je kijkt in mijn appsettings.Developmet.json
file you'll see I have the following configuration for the SMTP server:
"SmtpSettings":
{
"Server": "localhost",
"Port": 2525,
"SenderName": "Mostlylucid",
"Username": "",
"SenderEmail": "[email protected]",
"Password": "",
"EnableSSL": "false",
"EmailSendTry": 3,
"EmailSendFailed": "true",
"ToMail": "[email protected]",
"EmailSubject": "Mostlylucid"
}
Dit werkt voor SMTP4Dev en het stelt me in staat om deze functionaliteit te testen (ik kan sturen naar elk adres, en zie de e-mail in de SMTP4Dev interface op http://localhost:3002/).
Zodra je zeker bent dat het allemaal werkt kun je testen op een echte SMTP-server zoals GMAIL (bijv., zie Hier. voor hoe dat te doen)
Voor het uitvoeren van de diensten gedefinieerd in de devdeps-docker-compose.yml
bestand, u moet het volgende commando uitvoeren in dezelfde map als het bestand:
docker compose -f .\devdeps-docker-compose.yml up -d
Merk op dat je het in eerste instantie op deze manier moet uitvoeren; dit zorgt ervoor dat je de config elementen kunt zien die zijn doorgegeven vanuit de .env
bestand.
docker compose -f .\devdeps-docker-compose.yml config
Nu als je kijkt in Docker Desktop kunt u deze diensten draaiende zien