54 lines
1.3 KiB
YAML
54 lines
1.3 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
server:
|
|
build:
|
|
context: .
|
|
dockerfile: server/Dockerfile
|
|
container_name: task-receipts-server
|
|
ports:
|
|
- "4000:4000"
|
|
environment:
|
|
- NODE_ENV=production
|
|
# Printer configuration
|
|
- PRINTER_DRIVER=serial
|
|
volumes:
|
|
# Mount database directory for persistence
|
|
- ./server/data/prod.sqlite3:/app/server/prod.sqlite3:rw
|
|
# Mount USB devices for printer access
|
|
# /dev/bus/usb:/dev/bus/usb:rw
|
|
devices:
|
|
# Mount USB devices specifically
|
|
- /dev/bus/usb:/dev/bus/usb
|
|
privileged: true # Required for USB device access
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "require('http').get('http://localhost:4000/graphql', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) })"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
networks:
|
|
- task-receipts-network
|
|
|
|
client:
|
|
build:
|
|
context: .
|
|
dockerfile: client/Dockerfile
|
|
container_name: task-receipts-client
|
|
ports:
|
|
- "80:80"
|
|
depends_on:
|
|
server:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
networks:
|
|
- task-receipts-network
|
|
|
|
networks:
|
|
task-receipts-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
server-data:
|
|
driver: local |