feat: add Docker configuration for deployment
This commit is contained in:
4
.dockerignore
Normal file
4
.dockerignore
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
node_modules/
|
||||||
|
.env
|
||||||
|
data/
|
||||||
|
*.log
|
||||||
14
.env.development
Normal file
14
.env.development
Normal 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
14
.env.production
Normal 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
18
Dockerfile
Normal 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
23
docker-compose.yml
Normal 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:
|
||||||
Reference in New Issue
Block a user