Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: docker #135

Draft
wants to merge 1 commit into
base: refactor
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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