Skip to content

Commit

Permalink
refactor: docker compatibility with single instance next application
Browse files Browse the repository at this point in the history
  • Loading branch information
kinghat committed Dec 27, 2022
1 parent 0269534 commit 37513cf
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 44 deletions.
45 changes: 8 additions & 37 deletions src/Dockerfile
Original file line number Diff line number Diff line change
@@ -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
25 changes: 18 additions & 7 deletions src/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,44 @@ 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
environment:
- 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

0 comments on commit 37513cf

Please sign in to comment.