feat: add Docker configuration for deployment

This commit is contained in:
Hiro
2026-03-28 11:09:39 +00:00
parent 75f67c0b11
commit 102cf899f1
5 changed files with 73 additions and 0 deletions

4
.dockerignore Normal file
View File

@@ -0,0 +1,4 @@
node_modules/
.env
data/
*.log

14
.env.development Normal file
View File

@@ -0,0 +1,14 @@
# SimpleNote Web - Development Environment
# Server
PORT=3000
NODE_ENV=development
# Auth - generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ADMIN_TOKEN=dev-admin-token-change-in-production
# Data
DATA_ROOT=./data
# CORS (comma-separated origins or * for all)
CORS_ORIGIN=http://localhost:5173,http://localhost:3000

14
.env.production Normal file
View File

@@ -0,0 +1,14 @@
# SimpleNote Web - Production Environment
# Server
PORT=3000
NODE_ENV=production
# Auth
ADMIN_TOKEN=change-me-in-production
# Data
DATA_ROOT=./data
# CORS (comma-separated origins or * for all)
CORS_ORIGIN=*

18
Dockerfile Normal file
View File

@@ -0,0 +1,18 @@
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY src/ ./src/
COPY data/ ./data/
COPY ui/ ./ui/
COPY .env.example ./
EXPOSE 3000
ENV NODE_ENV=production
ENV PORT=3000
CMD ["node", "src/index.js"]

23
docker-compose.yml Normal file
View File

@@ -0,0 +1,23 @@
services:
web:
build: .
container_name: simplenote-web
restart: unless-stopped
ports:
- "${SIMPLENOTE_PORT:-3000}:3000"
environment:
- NODE_ENV=production
- PORT=3000
- ADMIN_TOKEN=${SIMPLENOTE_ADMIN_TOKEN}
- DATA_ROOT=/app/data
- CORS_ORIGIN=${SIMPLENOTE_CORS_ORIGIN:-*}
volumes:
- simplenote-data:/app/data
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
simplenote-data: