Browse Source

Update Docker setup with LTS Node version, define environment variables and services in docker-compose, and configure web application Dockerfile with multi-stage builds.

pull/35/head
Gianni Carafa 1 year ago
parent
commit
a794408ccb
  1. 2
      api/.env.example
  2. 4
      api/Dockerfile
  3. 31
      docker-compose.yaml
  4. 18
      web/Dockerfile

2
api/.env.example

@ -1,5 +1,5 @@
PORT= PORT=
MONGO_URI=
MONGO_URI=mongodb://mongo:27017/textbee
JWT_SECRET=secret JWT_SECRET=secret
JWT_EXPIRATION=60d JWT_EXPIRATION=60d

4
api/Dockerfile

@ -1,4 +1,4 @@
FROM node:18-alpine AS base
FROM node:lts-alpine AS base
RUN npm i -g pnpm RUN npm i -g pnpm
WORKDIR /app WORKDIR /app
COPY package.json pnpm-lock.yaml ./ COPY package.json pnpm-lock.yaml ./
@ -13,7 +13,7 @@ FROM base AS build
ENV NODE_ENV=production ENV NODE_ENV=production
RUN pnpm build RUN pnpm build
FROM node:18-alpine AS prod
FROM node:lts-alpine AS prod
ENV NODE_ENV=production ENV NODE_ENV=production
WORKDIR /app WORKDIR /app
RUN npm i -g pnpm RUN npm i -g pnpm

31
docker-compose.yaml

@ -0,0 +1,31 @@
services:
textbee-web:
image: textbee-web
container_name: textbee-web
build:
context: ./web
dockerfile: Dockerfile
ports:
- "3000:3000"
env_file:
- path: ./web/.env
required: true
command: pnpm start
textbee-api:
image: textbee-api
container_name: textbee-api
build:
context: ./api
dockerfile: Dockerfile
ports:
- "3005:3005"
env_file:
- path: ./api/.env
required: true
depends_on:
- mongo
mongo:
image: mongo
container_name: mongo
ports:
- "27017:27017"

18
web/Dockerfile

@ -0,0 +1,18 @@
FROM node:lts-alpine AS base
# Stage 1: Install web dependencies
FROM base AS web-deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable pnpm && pnpm install --frozen-lockfile
# Stage 2: Build the web application
FROM base AS web-builder
ENV NODE_ENV=production
EXPOSE 3000
WORKDIR /app
COPY . .
COPY --from=web-deps /app/node_modules ./node_modules
RUN corepack enable pnpm && pnpm run vercel-build
CMD ["pnpm", "start"]
Loading…
Cancel
Save