refactor: docker compatibility with single instance next application

pull/135/head
kinghat 2 years ago
parent 02695345cd
commit 37513cf036

@ -1,50 +1,21 @@
FROM node:17-alpine AS deps
FROM node:18-alpine AS builder
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
FROM node:17-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ARG API_URL
ENV NEXT_TELEMETRY_DISABLED=1
ENV API_URL=${API_URL:-http://localhost:3000}
RUN yarn build
RUN corepack enable && corepack prepare pnpm@latest --activate
RUN pnpm install --frozen-lockfile
FROM node:17-alpine AS runner
WORKDIR /app
ARG NODE_ENV
ARG DATABASE_URL
ENV NEXT_TELEMETRY_DISABLED=1
ENV NODE_ENV=${NODE_ENV:-production}
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder /app/next.config.mjs ./
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
ENV PORT=3001
ENV DATABASE_URL=${DATABASE_URL}
ENV DRIFT_URL=${DRIFT_URL:-http://localhost:3000}
EXPOSE 3001
RUN pnpm prisma && pnpm build
CMD ["node", "server.js"]
CMD pnpm start

@ -2,27 +2,30 @@ services:
drift:
build:
context: ./
dockerfile: Dockerfile
args:
- DATABASE_URL=postgressql://maxleiter:wHaQdWJcZz2pWd0@localhost:5432/postgres
container_name: drift
restart: unless-stopped
user: 1000:1000
environment:
- WELCOME_CONTENT="## Drift is a self-hostable clone of GitHub Gist. \nIt is a simple way to share code and text snippets with your friends, with support for the following:\n \n - Render GitHub Extended Markdown (including images)\n - User authentication\n - Private, public, and password protected posts\n - Markdown is rendered and stored on the server\n - Syntax highlighting and automatic language detection\n - Drag-and-drop file uploading\n\n If you want to signup, you can join at [/signup](/signup) as long as you have a passcode provided by the administrator (which you don\'t need for this demo). **This demo is on a memory-only database, so accounts and pastes can be deleted at any time.** \n\nYou can find the source code on [GitHub](https://github.com/MaxLeiter/drift)."
- WELCOME_TITLE="Drift"
- REGISTRATION_PASSWORD=""
- WELCOME_CONTENT=## Drift is a self-hostable clone of GitHub Gist. \nIt is a simple way to share code and text snippets with your friends, with support for the following:\n \n - Render GitHub Extended Markdown (including images)\n - User authentication\n - Private, public, and password protected posts\n - Markdown is rendered and stored on the server\n - Syntax highlighting and automatic language detection\n - Drag-and-drop file uploading\n\n If you want to signup, you can join at [/signup](/signup) as long as you have a passcode provided by the administrator (which you don\'t need for this demo). **This demo is on a memory-only database, so accounts and pastes can be deleted at any time.** \n\nYou can find the source code on [GitHub](https://github.com/MaxLeiter/drift).
- WELCOME_TITLE=Drift
- REGISTRATION_PASSWORD=
- NEXTAUTH_URL=http://localhost:3000
- NEXTAUTH_SECRET=secret
- GITHUB_CLIENT_ID=64100c941c2474a5698a
- GITHUB_CLIENT_SECRET=cf4c1d510741a439c77d0593e36469d234eca894
- DATABASE_URL=postgressql://maxleiter:wHaQdWJcZz2pWd0@postgres:5432/postgres
- DRIFT_URL=http://localhost:3000
ports:
- "3000:3000"
volumes:
- ./drift:/app
networks:
- drift_network
depends_on:
- postgres
postgres:
image: postgres:13
image: postgres:15
container_name: postgres
restart: unless-stopped
user: 1000:1000
@ -30,5 +33,13 @@ services:
- POSTGRES_PASSWORD=wHaQdWJcZz2pWd0
- POSTGRES_USER=maxleiter
- POSTGRES_DB=postgres
ports:
- 5432:5432
volumes:
- ./postgres:/var/lib/postgresql/data
networks:
- drift_network
networks:
drift_network:
external: true

Loading…
Cancel
Save