feat: 增加docker部署,docker-compose up -d --build

refactor
Lxy 5 days ago
parent 16201d567b
commit bf8375d345

@ -0,0 +1,9 @@
node_modules
dist
.data
.config
.git
.vscode
*.md
design/
*.log

@ -0,0 +1,32 @@
# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production stage
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/server.js ./
COPY --from=builder /app/src ./src
ENV NODE_ENV=production
ENV PORT=3001
EXPOSE 3001
CMD ["node", "server.js"]

@ -0,0 +1,15 @@
version: '3.8'
services:
trip-planner:
build: .
container_name: trip-planner
ports:
- "3001:3001"
volumes:
- E:\docker_workspace\trip-planner_datas:/app/.data
environment:
- NODE_ENV=production
- PORT=3001
- DATA_DIR=/app/.data
restart: unless-stopped

@ -5,10 +5,16 @@ import path from 'path'
import { fileURLToPath } from 'url'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const CONFIG_DIR = path.join(__dirname, '.config')
// Support Docker environment variable for data directory
const DATA_DIR = process.env.DATA_DIR || path.join(__dirname, '.data')
const CONFIG_DIR = process.env.CONFIG_DIR || path.join(__dirname, '.config')
const CONFIG_FILE = path.join(CONFIG_DIR, 'ai-config.json')
// Ensure config directory exists
// Ensure directories exist
if (!fs.existsSync(DATA_DIR)) {
fs.mkdirSync(DATA_DIR, { recursive: true })
}
if (!fs.existsSync(CONFIG_DIR)) {
fs.mkdirSync(CONFIG_DIR, { recursive: true })
}

@ -6,12 +6,13 @@ import { fileURLToPath } from 'url'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const DB_PATH = path.join(__dirname, '../../.data', 'trip-planner.db')
// Support Docker environment variable for data directory
const DATA_DIR = process.env.DATA_DIR || path.join(__dirname, '../../.data')
const DB_PATH = path.join(DATA_DIR, 'trip-planner.db')
// 确保数据目录存在
const dbDir = path.dirname(DB_PATH)
if (!fs.existsSync(dbDir)) {
fs.mkdirSync(dbDir, { recursive: true })
if (!fs.existsSync(DATA_DIR)) {
fs.mkdirSync(DATA_DIR, { recursive: true })
}
const db = new Database(DB_PATH)

Loading…
Cancel
Save