mirror of
https://git.victorphan.net/basketballcantho/ten-project.git
synced 2026-08-05 11:03:12 +07:00
sửa lai docker compose
This commit is contained in:
+11
-1
@@ -5,7 +5,17 @@ import bcrypt
|
|||||||
from jose import JWTError, jwt
|
from jose import JWTError, jwt
|
||||||
|
|
||||||
# ── Config (override via environment variables) ───────────────────────────────
|
# ── Config (override via environment variables) ───────────────────────────────
|
||||||
SECRET_KEY: str = os.environ["JWT_SECRET_KEY"] # must be set — no default
|
_raw_secret = os.getenv("JWT_SECRET_KEY", "")
|
||||||
|
if not _raw_secret:
|
||||||
|
import warnings
|
||||||
|
_raw_secret = "lms_dev_jwt_secret_change_in_production"
|
||||||
|
warnings.warn(
|
||||||
|
"JWT_SECRET_KEY is not set — using insecure default. "
|
||||||
|
"Set it in .env before going to production.",
|
||||||
|
RuntimeWarning,
|
||||||
|
stacklevel=1,
|
||||||
|
)
|
||||||
|
SECRET_KEY: str = _raw_secret
|
||||||
ALGORITHM: str = os.getenv("JWT_ALGORITHM", "HS256")
|
ALGORITHM: str = os.getenv("JWT_ALGORITHM", "HS256")
|
||||||
ACCESS_TOKEN_EXPIRE_MINUTES: int = int(
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = int(
|
||||||
os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", "60")
|
os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", "60")
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: ${POSTGRES_DB:-lms_db}
|
POSTGRES_DB: ${POSTGRES_DB:-lms_db}
|
||||||
POSTGRES_USER: ${POSTGRES_USER:-lms_user}
|
POSTGRES_USER: ${POSTGRES_USER:-lms_user}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-lms_dev_password}
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -44,8 +44,8 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: postgresql+psycopg2://${POSTGRES_USER:-lms_user}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB:-lms_db}
|
DATABASE_URL: postgresql+psycopg2://${POSTGRES_USER:-lms_user}:${POSTGRES_PASSWORD:-lms_dev_password}@db:5432/${POSTGRES_DB:-lms_db}
|
||||||
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
|
JWT_SECRET_KEY: ${JWT_SECRET_KEY:-lms_dev_jwt_secret_change_in_production}
|
||||||
JWT_ALGORITHM: HS256
|
JWT_ALGORITHM: HS256
|
||||||
ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-60}
|
ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-60}
|
||||||
UPLOAD_DIR: /uploads
|
UPLOAD_DIR: /uploads
|
||||||
|
|||||||
+4
-1
@@ -16,7 +16,7 @@ COPY . .
|
|||||||
ARG NEXT_PUBLIC_API_URL=http://backend:8000
|
ARG NEXT_PUBLIC_API_URL=http://backend:8000
|
||||||
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
|
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
|
||||||
|
|
||||||
RUN npm run build
|
RUN mkdir -p /app/public && npm run build
|
||||||
|
|
||||||
# ── Stage 3: runtime ──────────────────────────────────────────────────────────
|
# ── Stage 3: runtime ──────────────────────────────────────────────────────────
|
||||||
FROM node:20-alpine AS runtime
|
FROM node:20-alpine AS runtime
|
||||||
@@ -24,6 +24,9 @@ FROM node:20-alpine AS runtime
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
# public/ may not exist in projects that don't use it — create it to be safe
|
||||||
|
RUN mkdir -p .next/static public
|
||||||
|
|
||||||
COPY --from=builder /app/public ./public
|
COPY --from=builder /app/public ./public
|
||||||
COPY --from=builder /app/.next/standalone ./
|
COPY --from=builder /app/.next/standalone ./
|
||||||
COPY --from=builder /app/.next/static ./.next/static
|
COPY --from=builder /app/.next/static ./.next/static
|
||||||
|
|||||||
Reference in New Issue
Block a user