Skip to content

Commit e82e50e

Browse files
authored
feat: docker (#496)
* feat: add a dockerfile * feat: add docker * fix: remove redundant env var NEXT_PUBLIC_COMMENT_DOMAIN * fix: allow optional social auth * fix(e2e): can't find the domain input * fix: ut error * fix: ut * fix: e2e
1 parent f353ec4 commit e82e50e

File tree

73 files changed

+2801
-1294
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2801
-1294
lines changed

.dockerignore

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Dockerfile
2+
.dockerignore
3+
# node_modules
4+
npm-debug.log
5+
README.md
6+
# .next
7+
# .git
8+
.github
9+
.turbo
10+
**/.env.local
11+
.vercel
12+
13+
e2e
14+
/services

.github/workflows/bundle-analysis.yml

-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,5 @@ jobs:
5454
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }}
5555
NEXT_PUBLIC_ANALYTICS_DOMAIN: ${{ secrets.NEXT_PUBLIC_ANALYTICS_DOMAIN }}
5656
NEXT_PUBLIC_APP_URL: ${{ secrets.NEXT_PUBLIC_APP_URL }}
57-
NEXT_PUBLIC_COMMENT_DOMAIN: ${{ secrets.NEXT_PUBLIC_COMMENT_DOMAIN }}
5857
NEXT_PUBLIC_HASURA_HTTP_ORIGIN: ${{ secrets.NEXT_PUBLIC_HASURA_HTTP_ORIGIN }}
5958
NEXT_PUBLIC_HASURA_WS_ORIGIN: ${{ secrets.NEXT_PUBLIC_HASURA_WS_ORIGIN }}

.github/workflows/docker.yml

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Publish Docker images
2+
3+
on:
4+
create:
5+
tags: ['v*']
6+
push:
7+
branches: [prod]
8+
pull_request:
9+
branches: [prod]
10+
11+
jobs:
12+
push_builder:
13+
name: Builder
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Check out the repo
17+
uses: actions/checkout@v3
18+
19+
- name: Extract meta
20+
id: builder-meta
21+
uses: docker/metadata-action@v4
22+
with:
23+
images: devrsi0n/chirpy
24+
tags: |
25+
type=ref,event=branch
26+
type=semver,pattern={{version}}
27+
type=semver,pattern={{major}}.{{minor}}
28+
type=semver,pattern={{major}}
29+
30+
- name: Log in to Docker Hub
31+
if: github.event_name != 'pull_request'
32+
uses: docker/login-action@v2
33+
with:
34+
username: ${{ secrets.DOCKER_USERNAME }}
35+
password: ${{ secrets.DOCKER_PASSWORD }}
36+
37+
- name: Build and push builder image
38+
uses: docker/build-push-action@v3
39+
with:
40+
context: .
41+
push: ${{ github.event_name != 'pull_request' }}
42+
tags: ${{ steps.builder-meta.outputs.tags }}
43+
labels: ${{ steps.builder-meta.outputs.labels }}
44+
build-args:
45+
NEXT_PUBLIC_HASURA_HTTP_ORIGIN: ${{ secrets.NEXT_PUBLIC_HASURA_HTTP_ORIGIN }}
46+
NEXT_PUBLIC_HASURA_WS_ORIGIN: ${{ secrets.NEXT_PUBLIC_HASURA_HTTP_ORIGIN }}
47+
NEXT_PUBLIC_APP_URL: ${{ secrets.NEXT_PUBLIC_APP_URL }}
48+
NEXT_PUBLIC_VAPID: ${{ secrets.NEXT_PUBLIC_VAPID }}
49+
NEXT_PUBLIC_ANALYTICS_DOMAIN: ${{ secrets.NEXT_PUBLIC_ANALYTICS_DOMAIN }}
50+
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }}
51+
HASURA_ADMIN_SECRET: ${{ secrets.HASURA_ADMIN_SECRET }}
52+
HASURA_EVENT_SECRET: ${{ secrets.HASURA_EVENT_SECRET }}
53+
HASH_ALGORITHM: ${{ secrets.HASH_ALGORITHM }}
54+
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
55+
PRIVATE_VAPID: ${{ secrets.PRIVATE_VAPID }}
56+
EMAIL_API_KEY: ${{ secrets.EMAIL_API_KEY }}
57+
GITHUB_CLIENT_ID: ${{ secrets.GITHUB_CLIENT_ID }}
58+
GITHUB_CLIENT_SECRET: ${{ secrets.GITHUB_CLIENT_SECRET }}
59+
TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
60+
TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}

.github/workflows/release.yml

-1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,5 @@ jobs:
6161
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }}
6262
NEXT_PUBLIC_ANALYTICS_DOMAIN: ${{ secrets.NEXT_PUBLIC_ANALYTICS_DOMAIN }}
6363
NEXT_PUBLIC_APP_URL: ${{ secrets.NEXT_PUBLIC_APP_URL }}
64-
NEXT_PUBLIC_COMMENT_DOMAIN: ${{ secrets.NEXT_PUBLIC_COMMENT_DOMAIN }}
6564
NEXT_PUBLIC_HASURA_HTTP_ORIGIN: ${{ secrets.NEXT_PUBLIC_HASURA_HTTP_ORIGIN }}
6665
NEXT_PUBLIC_HASURA_WS_ORIGIN: ${{ secrets.NEXT_PUBLIC_HASURA_WS_ORIGIN }}

Dockerfile

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
FROM node:16-slim AS base
2+
WORKDIR /app
3+
ARG NEXT_PUBLIC_HASURA_HTTP_ORIGIN
4+
ENV NEXT_PUBLIC_HASURA_HTTP_ORIGIN=${NEXT_PUBLIC_HASURA_HTTP_ORIGIN}
5+
ARG NEXT_PUBLIC_HASURA_WS_ORIGIN
6+
ENV NEXT_PUBLIC_HASURA_WS_ORIGIN=${NEXT_PUBLIC_HASURA_WS_ORIGIN}
7+
ARG NEXT_PUBLIC_APP_URL
8+
ENV NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL}
9+
ARG NEXT_PUBLIC_VAPID
10+
ENV NEXT_PUBLIC_VAPID=${NEXT_PUBLIC_VAPID}
11+
ARG NEXT_PUBLIC_ANALYTICS_DOMAIN
12+
ENV NEXT_PUBLIC_ANALYTICS_DOMAIN=${NEXT_PUBLIC_ANALYTICS_DOMAIN}
13+
ARG NEXTAUTH_URL
14+
ENV NEXTAUTH_URL=${NEXTAUTH_URL}
15+
ARG HASURA_ADMIN_SECRET
16+
ENV HASURA_ADMIN_SECRET=${HASURA_ADMIN_SECRET}
17+
ARG HASURA_EVENT_SECRET
18+
ENV HASURA_EVENT_SECRET=${HASURA_EVENT_SECRET}
19+
ARG HASH_ALGORITHM
20+
ENV HASH_ALGORITHM=${HASH_ALGORITHM}
21+
ARG NEXTAUTH_SECRET
22+
ENV NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
23+
ARG PRIVATE_VAPID
24+
ENV PRIVATE_VAPID=${PRIVATE_VAPID}
25+
ARG EMAIL_API_KEY
26+
ENV EMAIL_API_KEY=${EMAIL_API_KEY}
27+
ARG GITHUB_CLIENT_ID
28+
ENV GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
29+
ARG GITHUB_CLIENT_SECRET
30+
ENV GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
31+
ARG TWITTER_CONSUMER_KEY
32+
ENV TWITTER_CONSUMER_KEY=${TWITTER_CONSUMER_KEY}
33+
# Disable telemetry
34+
ENV NEXT_TELEMETRY_DISABLED=1
35+
ENV DOCKER=true
36+
RUN npm --global install pnpm
37+
38+
FROM base AS builder
39+
RUN apt-get -qy update && apt-get -qy --no-install-recommends install openssl git
40+
41+
# COPY pnpm-lock.yaml .npmrc pnpm-workspace.yaml patches ./
42+
# RUN pnpm fetch
43+
ADD . ./
44+
RUN pnpm install -r --frozen-lockfile
45+
RUN pnpm turbo run build --filter=@chirpy-dev/main-app...
46+
47+
FROM base AS runner
48+
49+
RUN apt-get -qy update \
50+
&& apt-get -qy --no-install-recommends install \
51+
openssl \
52+
&& apt-get autoremove -yq \
53+
&& apt-get clean \
54+
&& rm -rf /var/lib/apt/lists/*
55+
# RUN addgroup --system --gid 1001 nodejs
56+
# RUN adduser --system --uid 1001 nextjs
57+
# USER nextjs
58+
59+
COPY ./apps/main/.env.docker ./apps/main/.env.production
60+
COPY --from=builder /app/node_modules ./node_modules
61+
COPY --from=builder /app/apps/main/public ./apps/main/public
62+
COPY --from=builder --chown=node:node /app/apps/main/.next/standalone ./apps/main/
63+
COPY --from=builder --chown=node:node /app/apps/main/.next/static ./apps/main/.next/static
64+
65+
COPY env.sh ./
66+
RUN chmod +x ./env.sh
67+
# Setup env.sh config
68+
ENV ENVSH_OUTPUT=./apps/main/public/__env.js
69+
ENV ENVSH_ENV=./apps/main/.env.production
70+
ENTRYPOINT ["./env.sh"]
71+
CMD node ./apps/main/server.js
72+
73+
EXPOSE 3000

0 commit comments

Comments
 (0)