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
|
timeout: 5s
|
||||||
retries: 5
|
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:
|
networks:
|
||||||
default:
|
default:
|
||||||
name: coursecraft-network
|
name: coursecraft-network
|
||||||
|
|||||||
Reference in New Issue
Block a user