Docker voor Finch
Finch is ontworpen voor implementatie met Docker. Deze handleiding behandelt een volledige Docker-configuratie.
Dockerfile
FROM dart:stable AS build
WORKDIR /app
COPY pubspec.* ./
RUN dart pub get
COPY . .
RUN dart compile exe bin/finch.dart -o bin/server
FROM debian:bullseye-slim
WORKDIR /app
COPY --from=build /app/bin/server ./bin/server
COPY --from=build /app/public ./public
COPY --from=build /app/lib/views ./lib/views
COPY --from=build /runtime/ /runtime/
RUN chmod +x bin/server
EXPOSE 8080
CMD ["./bin/server"]
docker-compose.yaml
version: '3.8'
services:
finch:
build: .
ports:
- "8080:8080"
environment:
APP_ENV: production
MONGODB_HOST: mongodb
MONGODB_PORT: 27017
MONGODB_DATABASE: myapp
MYSQL_HOST: mysql
MYSQL_PORT: 3306
MYSQL_DATABASE: myapp
MYSQL_USER: app_user
MYSQL_PASS: secret
depends_on:
- mongodb
- mysql
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- finch
mongodb:
image: mongo:6
volumes:
- mongo_data:/data/db
environment:
MONGO_INITDB_DATABASE: myapp
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootsecret
MYSQL_DATABASE: myapp
MYSQL_USER: app_user
MYSQL_PASSWORD: secret
volumes:
- mysql_data:/var/lib/mysql
volumes:
mongo_data:
mysql_data:
Omgevingsvariabelen
| Variabele | Beschrijving |
|---|---|
APP_ENV |
local of production |
MONGODB_HOST |
Hostnaam van de MongoDB-service |
MONGODB_DATABASE |
Naam van de MongoDB-database |
MYSQL_HOST |
Hostnaam van de MySQL-service |
MYSQL_DATABASE |
Naam van de MySQL-database |
MAIL_HOST |
SMTP-server |
Uitvoeren
# Bouwen en starten
docker-compose up --build
# Op de achtergrond uitvoeren
docker-compose up -d
# Logs bekijken
docker-compose logs -f finch