@flightdev/adapter-docker
v0.0.7
Published
Docker adapter for Flight Framework - optimized, production-ready containers
Maintainers
Readme
@flightdev/adapter-docker
Docker deployment adapter for Flight Framework. Generate optimized Docker images for containerized deployments.
Table of Contents
Installation
npm install @flightdev/adapter-dockerQuick Start
// flight.config.ts
import { defineConfig } from '@flightdev/core';
import docker from '@flightdev/adapter-docker';
export default defineConfig({
adapter: docker(),
});Configuration
docker({
// Base image
baseImage: 'node:20-alpine',
// Port to expose
port: 3000,
// Run as non-root user
user: 'node',
// Include these files in the image
include: ['package.json', 'package-lock.json'],
// Build arguments
buildArgs: {
NODE_ENV: 'production',
},
});Generated Dockerfile
After building, find the Dockerfile at .docker/Dockerfile:
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
COPY --from=builder --chown=nodejs:nodejs /app/.output .output
COPY --from=builder /app/package*.json ./
RUN npm ci --omit=dev
USER nodejs
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]Build and Run
# Build
npm run build
# Build Docker image
docker build -f .docker/Dockerfile -t my-flight-app .
# Run
docker run -p 3000:3000 my-flight-app
# With environment variables
docker run -p 3000:3000 -e DATABASE_URL=... my-flight-appDocker Compose
# docker-compose.yml
version: '3.8'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://db:5432/myapp
depends_on:
- db
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:License
MIT
