add docker container deployment support

This commit is contained in:
2026-08-18 13:54:51 +07:00
parent 7c93bc3ff6
commit 091496e95c
5 changed files with 85 additions and 3 deletions
+13
View File
@@ -0,0 +1,13 @@
node_modules
npm-debug.log
.git
.env
.env.*
!.env.example
oldCode
test
docs
README.md
vercel.json
.github
src/uploads
+5
View File
@@ -151,3 +151,8 @@ uploads/
.vercel
.vercel/*.json
.env*.local
# AI agent tooling
.agents/
skills-lock.json
.claude/
+16
View File
@@ -0,0 +1,16 @@
FROM node:20-slim
RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
ENV NODE_ENV=production
COPY package*.json ./
COPY prisma ./prisma
RUN npm ci --omit=dev
COPY src ./src
EXPOSE 3000
CMD ["sh", "-c", "npx prisma migrate deploy && node src/index.js"]
+48
View File
@@ -0,0 +1,48 @@
services:
db:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE:-internify_db}
MYSQL_USER: ${MYSQL_USER:-internify}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:?set MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?set MYSQL_ROOT_PASSWORD}
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-p$$MYSQL_ROOT_PASSWORD"]
interval: 10s
timeout: 5s
retries: 10
app:
build: .
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
NODE_ENV: production
PORT: 3000
DATABASE_URL: ${DATABASE_URL:-mysql://${MYSQL_USER:-internify}:${MYSQL_PASSWORD}@db:3306/${MYSQL_DATABASE:-internify_db}}
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS}
JWT_PRIVATE_KEY: ${JWT_PRIVATE_KEY}
JWT_PUBLIC_KEY: ${JWT_PUBLIC_KEY}
RECAPTCHA_SECRET_KEY: ${RECAPTCHA_SECRET_KEY}
RECAPTCHA_SITE_KEY: ${RECAPTCHA_SITE_KEY}
SWAGGER_ENABLED: ${SWAGGER_ENABLED:-false}
AUTH_EMAIL: ${AUTH_EMAIL}
AUTH_PASSWORD: ${AUTH_PASSWORD}
SEED_ADMIN_EMAIL: ${SEED_ADMIN_EMAIL}
SEED_ADMIN_PASSWORD: ${SEED_ADMIN_PASSWORD}
SEED_ACTIVE_BATCH_NUMBER: ${SEED_ACTIVE_BATCH_NUMBER}
volumes:
- uploads:/tmp/uploads
- mentor_uploads:/app/src/uploads
expose:
- "3000"
volumes:
db_data:
uploads:
mentor_uploads:
+3 -3
View File
@@ -118,9 +118,9 @@ app.use((err, req, res, next) => {
const server = http.createServer(app);
initSocket(server);
if (process.env.NODE_ENV !== 'production') {
server.listen(PORT, () => {
console.log(`listening at http://localhost:${PORT}`);
if (!process.env.VERCEL) {
server.listen(PORT || 3000, () => {
console.log(`listening on port ${PORT || 3000}`);
});
}