added prod
This commit is contained in:
parent
247e520900
commit
0a2494cd7e
5 changed files with 88 additions and 9 deletions
32
Dockerfile
Normal file
32
Dockerfile
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Build stage
|
||||
FROM oven/bun:1 AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy package files
|
||||
COPY package.json .
|
||||
COPY bun.lockb .
|
||||
|
||||
# Install dependencies
|
||||
RUN bun install --frozen-lockfile
|
||||
|
||||
# Copy source code
|
||||
COPY . .
|
||||
|
||||
# RUN DB Migrations and build
|
||||
RUN bun run db:migrate && bun run build
|
||||
|
||||
# Production stage
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy only the compiled binary from builder
|
||||
COPY --from=builder /app/server .
|
||||
|
||||
# Expose the port your app runs on
|
||||
EXPOSE 3000
|
||||
|
||||
# Run the binary
|
||||
CMD ["./server"]
|
||||
|
||||
45
docker-compose.yml
Normal file
45
docker-compose.yml
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
services:
|
||||
api:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "${SERVER_PORT}:${SERVER_PORT}"
|
||||
depends_on:
|
||||
- db
|
||||
- minio
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
DATABASE_URL: ${DATABASE_URL}
|
||||
|
||||
db:
|
||||
image: postgres:latest
|
||||
environment:
|
||||
POSTGRES_USER: ${DB_USER}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: ${DB_NAME}
|
||||
ports:
|
||||
- "${DB_PORT}:5432"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
|
||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
||||
command: server /data --console-address ":9001"
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "mc", "ready", "local"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
minio_data:
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
"db:generate": "drizzle-kit generate",
|
||||
"db:migrate": "drizzle-kit migrate",
|
||||
"db:push": "drizzle-kit push:pg",
|
||||
"build": "bun build --compile --minify-whitespace --minify-syntax --target bun --outfile server ./src/app.ts",
|
||||
"dev": "bun run --watch src/app.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
@ -14,6 +15,7 @@
|
|||
"@elysiajs/cookie": "^0.8.0",
|
||||
"@elysiajs/cors": "^1.2.0",
|
||||
"@elysiajs/swagger": "^1.2.0",
|
||||
"drizzle-kit": "^0.30.2",
|
||||
"dotenv": "^16.4.7",
|
||||
"drizzle-orm": "^0.38.4",
|
||||
"elysia": "latest",
|
||||
|
|
@ -26,7 +28,6 @@
|
|||
"devDependencies": {
|
||||
"@types/pg": "^8.11.10",
|
||||
"bun-types": "latest",
|
||||
"drizzle-kit": "^0.30.2",
|
||||
"tsx": "^4.19.2"
|
||||
},
|
||||
"module": "src/app.js"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ import { api } from "./api";
|
|||
const allowedOrigins = [
|
||||
"http://localhost:5175",
|
||||
"http://localhost:5173",
|
||||
"https://your-production-site.com",
|
||||
"https://dashboard.planpostai.com",
|
||||
"https://canvas.planpostai.com",
|
||||
];
|
||||
|
||||
const app = new Elysia({
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue