Lokalne usługi deweloperskie¶
Przegląd¶
Backend wymaga trzech lokalnych usług do developmentu: 1. SQL Server - baza danych 2. Azurite - emulator Azure Storage 3. MailHog - SMTP server do testowania emaili
Wszystkie uruchamiane są przez Docker Compose.
Docker Compose¶
Uruchomienie wszystkich usług¶
cd masaku-api/docker
# Uruchom w tle
docker-compose up -d
# Uruchom z logami
docker-compose up
# Sprawdź status
docker-compose ps
# Zatrzymaj
docker-compose down
Uruchomienie pojedynczej usługi¶
# Tylko SQL Server
docker-compose up -d sql
# Tylko Azurite
docker-compose up -d azurite
# Tylko MailHog
docker-compose up -d mailhog
SQL Server¶
Informacje¶
- Port: 1433
- Login: sa
- Password: Masaku123
- Database: Masaku
Połączenie¶
Connection string:
DBeaver: 1. New Connection → SQL Server 2. Host: localhost 3. Port: 1433 4. Database: Masaku 5. Username: sa 6. Password: Masaku123 7. Driver properties: trustServerCertificate=true
sqlcmd (CLI):
sqlcmd -S localhost,1433 -U sa -P Masaku123 -d Masaku
# Przykładowe query
1> SELECT TOP 5 * FROM Users;
2> GO
Zarządzanie danymi¶
# Backup bazy
docker exec masaku-sql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Masaku123 -Q "BACKUP DATABASE Masaku TO DISK = '/var/opt/mssql/backup/masaku.bak'"
# Restore bazy
docker exec masaku-sql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Masaku123 -Q "RESTORE DATABASE Masaku FROM DISK = '/var/opt/mssql/backup/masaku.bak' WITH REPLACE"
# Reset bazy (usuń wszystkie dane)
docker exec masaku-sql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Masaku123 -Q "DROP DATABASE Masaku; CREATE DATABASE Masaku;"
Troubleshooting¶
Błąd: Login failed for user 'sa'
- Sprawdź czy hasło to Masaku123
- Sprawdź czy TrustServerCertificate=True jest w connection string
Błąd: Cannot connect to SQL Server
# Sprawdź czy kontener działa
docker ps | grep sql
# Restart
docker-compose restart sql
# Logi
docker-compose logs sql
Azurite (Azure Storage Emulator)¶
Informacje¶
- Blob Service: localhost:10000
- Queue Service: localhost:10001
- Table Service: localhost:10002
- Account Name: devstoreaccount1
- Account Key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
Connection String¶
Azure Storage Explorer¶
- Otwórz Azure Storage Explorer
- Kliknij "Connect to Azure Storage"
- Wybierz "Local storage emulator"
- Default settings:
- Blob: localhost:10000
- Queue: localhost:10001
- Table: localhost:10002
- Connect
Przykłady użycia¶
Przeglądanie kontenerów:
# Użyj Azure Storage Explorer lub az CLI
az storage container list --connection-string "UseDevelopmentStorage=true"
Upload pliku:
az storage blob upload \
--connection-string "UseDevelopmentStorage=true" \
--container-name documents \
--name test.pdf \
--file ./test.pdf
Troubleshooting¶
Błąd: Cannot connect to Azurite
# Sprawdź czy działa
docker ps | grep azurite
# Restart
docker-compose restart azurite
# Sprawdź porty
lsof -i :10000
Czyszczenie danych:
# Zatrzymaj Azurite
docker-compose stop azurite
# Usuń wolumeny
docker volume rm docker_azurite-data
# Uruchom ponownie
docker-compose up -d azurite
MailHog (Email Testing)¶
Informacje¶
- SMTP Port: 1025
- Web UI: http://localhost:8025
- API: http://localhost:8025/api
Użycie¶
W appsettings:
Web UI: Otwórz http://localhost:8025 w przeglądarce aby zobaczyć wszystkie wysłane emaile.
API:
# Pobierz wszystkie emaile
curl http://localhost:8025/api/v2/messages
# Usuń wszystkie emaile
curl -X DELETE http://localhost:8025/api/v1/messages
Testowanie emaili¶
# Wyślij testowego emaila
curl -X POST http://localhost:8025/api/v2/messages \
-d "from=test@example.com" \
-d "to=user@example.com" \
-d "subject=Test" \
-d "body=Hello World"
Sprawdź w Web UI: http://localhost:8025
Troubleshooting¶
Nie widzę emaili w UI:
- Sprawdź czy aplikacja używa portu 1025 (nie 25 czy 587)
- Sprawdź czy MailHog działa: docker ps | grep mailhog
- Sprawdź logi: docker-compose logs mailhog
Zarządzanie wszystkimi usługami¶
Status¶
cd masaku-api/docker
# Status wszystkich kontenerów
docker-compose ps
# Zużycie zasobów
docker stats
Logi¶
# Logi wszystkich usług
docker-compose logs
# Follow logs
docker-compose logs -f
# Logi konkretnej usługi
docker-compose logs sql
docker-compose logs azurite
docker-compose logs mailhog
Restart¶
# Restart wszystkich usług
docker-compose restart
# Restart konkretnej usługi
docker-compose restart sql
Czyszczenie¶
# Zatrzymaj i usuń kontenery
docker-compose down
# Usuń również wolumeny (UWAGA: traci dane!)
docker-compose down -v
# Restart od zera
docker-compose down -v
docker-compose up -d
Weryfikacja całego setupu¶
# 1. Sprawdź czy wszystkie usługi działają
docker-compose ps
# 2. Test SQL Server
sqlcmd -S localhost,1433 -U sa -P Masaku123 -Q "SELECT @@VERSION"
# 3. Test Azurite
curl http://localhost:10000/devstoreaccount1?comp=list
# 4. Test MailHog
curl http://localhost:8025/api/v2/messages
# 5. Uruchom API
cd ../Masaku.API
dotnet run
# 6. Sprawdź Swagger
open http://localhost:5000/swagger
Jeśli wszystkie kroki przeszły pomyślnie, środowisko jest gotowe!