123
This commit is contained in:
11
.dockerignore
Normal file
11
.dockerignore
Normal file
@ -0,0 +1,11 @@
|
||||
node_modules
|
||||
.next
|
||||
.turbo
|
||||
dist
|
||||
.git
|
||||
*.log
|
||||
.env
|
||||
.env.local
|
||||
.env.*
|
||||
!packages/database/.env.example
|
||||
apps/web/.env.local
|
||||
20
docker/Dockerfile.ai
Normal file
20
docker/Dockerfile.ai
Normal file
@ -0,0 +1,20 @@
|
||||
FROM node:20-alpine
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@9.0.0 --activate
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
COPY apps/api/package.json apps/api/
|
||||
COPY apps/ai-service/package.json apps/ai-service/
|
||||
COPY packages/database/package.json packages/database/
|
||||
COPY packages/shared/package.json packages/shared/
|
||||
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN pnpm build --filter=@coursecraft/ai-service...
|
||||
|
||||
WORKDIR /app
|
||||
CMD ["node", "apps/ai-service/dist/index.js"]
|
||||
21
docker/Dockerfile.api
Normal file
21
docker/Dockerfile.api
Normal file
@ -0,0 +1,21 @@
|
||||
FROM node:20-alpine
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@9.0.0 --activate
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
COPY apps/api/package.json apps/api/
|
||||
COPY apps/web/package.json apps/web/
|
||||
COPY apps/ai-service/package.json apps/ai-service/
|
||||
COPY packages/database/package.json packages/database/
|
||||
COPY packages/shared/package.json packages/shared/
|
||||
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN pnpm build --filter=@coursecraft/api...
|
||||
|
||||
EXPOSE 3125
|
||||
CMD ["node", "apps/api/dist/main.js"]
|
||||
23
docker/Dockerfile.web
Normal file
23
docker/Dockerfile.web
Normal file
@ -0,0 +1,23 @@
|
||||
FROM node:20-alpine
|
||||
|
||||
RUN corepack enable && corepack prepare pnpm@9.0.0 --activate
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
COPY apps/api/package.json apps/api/
|
||||
COPY apps/web/package.json apps/web/
|
||||
COPY apps/ai-service/package.json apps/ai-service/
|
||||
COPY packages/database/package.json packages/database/
|
||||
COPY packages/shared/package.json packages/shared/
|
||||
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN pnpm build --filter=@coursecraft/web...
|
||||
|
||||
EXPOSE 3080
|
||||
ENV PORT=3080
|
||||
WORKDIR /app
|
||||
CMD ["pnpm", "--filter", "@coursecraft/web", "start"]
|
||||
@ -50,6 +50,59 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
api:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: docker/Dockerfile.api
|
||||
container_name: coursecraft-api
|
||||
restart: unless-stopped
|
||||
env_file: ../.env
|
||||
environment:
|
||||
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/coursecraft?schema=public
|
||||
REDIS_URL: redis://redis:6379
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: "6379"
|
||||
MEILISEARCH_HOST: http://meilisearch:7700
|
||||
PORT: "3125"
|
||||
NODE_ENV: production
|
||||
ports:
|
||||
- "3125:3125"
|
||||
depends_on:
|
||||
postgres: { condition: service_healthy }
|
||||
redis: { condition: service_healthy }
|
||||
meilisearch: { condition: service_healthy }
|
||||
|
||||
ai-service:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: docker/Dockerfile.ai
|
||||
container_name: coursecraft-ai-service
|
||||
restart: unless-stopped
|
||||
env_file: ../.env
|
||||
environment:
|
||||
REDIS_URL: redis://redis:6379
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: "6379"
|
||||
NODE_ENV: production
|
||||
depends_on:
|
||||
redis: { condition: service_healthy }
|
||||
|
||||
web:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: docker/Dockerfile.web
|
||||
container_name: coursecraft-web
|
||||
restart: unless-stopped
|
||||
env_file: ../.env
|
||||
environment:
|
||||
API_URL: http://api:3125
|
||||
PORT: "3080"
|
||||
NODE_ENV: production
|
||||
ports:
|
||||
- "3080:3080"
|
||||
depends_on:
|
||||
- api
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: coursecraft-network
|
||||
|
||||
Reference in New Issue
Block a user