diff --git a/.github/workflows/cd_dev.yaml b/.github/workflows/cd_dev.yaml index c7414840..fac96afa 100644 --- a/.github/workflows/cd_dev.yaml +++ b/.github/workflows/cd_dev.yaml @@ -149,8 +149,10 @@ jobs: - name: Build and Push Container # NEXT_PUBLIC_ env variables have to be set during the build phase. run: |- + export DATABASE_URL=${{secrets.DATABASE_URL}} docker build \ --build-arg NEXT_PUBLIC_SITE_ROOT=${{secrets.NEXT_PUBLIC_SITE_ROOT}} \ + --secret id=sec_database_url,env=DATABASE_URL \ -f Dockerfile \ -t "${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE }}/${{ env.SERVICE }}:${{ env.TAG }}" ./ docker push "${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE }}/${{ env.SERVICE }}:${{ env.TAG }}" diff --git a/.github/workflows/cd_prod.yaml b/.github/workflows/cd_prod.yaml index 5142855b..0cd004aa 100644 --- a/.github/workflows/cd_prod.yaml +++ b/.github/workflows/cd_prod.yaml @@ -152,9 +152,11 @@ jobs: - name: Build and Push Container # NEXT_PUBLIC_ env variables have to be set during the build phase. run: |- + export DATABASE_URL=${{secrets.DATABASE_URL}} docker build \ --build-arg NEXT_PUBLIC_SITE_ROOT=${{secrets.NEXT_PUBLIC_SITE_ROOT}} \ --build-arg NEXT_PUBLIC_POSTHOG_KEY=${{secrets.NEXT_PUBLIC_POSTHOG_KEY}} \ + --secret id=sec_database_url,env=DATABASE_URL \ -f Dockerfile \ -t "${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE }}/${{ env.SERVICE }}:${{ env.TAG }}" ./ docker push "${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE }}/${{ env.SERVICE }}:${{ env.TAG }}" diff --git a/.github/workflows/cd_staging.yaml b/.github/workflows/cd_staging.yaml index ad473304..53917898 100644 --- a/.github/workflows/cd_staging.yaml +++ b/.github/workflows/cd_staging.yaml @@ -153,8 +153,10 @@ jobs: - name: Build and Push Container # NEXT_PUBLIC_ env variables have to be set during the build phase. run: |- + export DATABASE_URL=${{secrets.DATABASE_URL}} docker build \ --build-arg NEXT_PUBLIC_SITE_ROOT=${{secrets.NEXT_PUBLIC_SITE_ROOT}} \ + --secret id=sec_database_url,env=DATABASE_URL \ -f Dockerfile \ -t "${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE }}/${{ env.SERVICE }}:${{ env.TAG }}" ./ docker push "${{ env.REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.SERVICE }}/${{ env.SERVICE }}:${{ env.TAG }}" diff --git a/Dockerfile b/Dockerfile index befe71d7..5430be9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,32 @@ -FROM node:20-bullseye as installer +FROM node:22-bullseye AS installer WORKDIR /app COPY prisma ./ COPY package.json package-lock.json ./ RUN npm install -FROM node:20-bullseye as builder +FROM node:22-bullseye AS builder WORKDIR /app COPY --from=installer /app/node_modules/ /app/node_modules COPY . . -ENV NEXT_TELEMETRY_DISABLED 1 +ENV NEXT_TELEMETRY_DISABLED=1 ARG NEXT_PUBLIC_POSTHOG_KEY ENV NEXT_PUBLIC_POSTHOG_KEY=$NEXT_PUBLIC_POSTHOG_KEY ARG NEXT_PUBLIC_SITE_ROOT ENV NEXT_PUBLIC_SITE_ROOT=$NEXT_PUBLIC_SITE_ROOT -RUN npm run build +RUN --mount=type=secret,id=sec_database_url \ + export DATABASE_URL=$(cat /run/secrets/sec_database_url) && \ + npm run build # Force node.js to use ipv4 first, over ipv6, by appending the following to server.js RUN echo "const dns = require('node:dns');" >> ./.next/standalone/server.js \ && echo "dns.setDefaultResultOrder('ipv4first');" >> ./.next/standalone/server.js -FROM node:20-bullseye as runner +FROM node:22-bullseye AS runner WORKDIR /app -ENV NODE_ENV production +ENV NODE_ENV=production RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs @@ -34,7 +36,7 @@ COPY --from=builder --chown=nextjs:nodejs /app/public ./public USER nextjs EXPOSE 3000 -ENV PORT 3000 -ENV HOSTNAME "0.0.0.0" +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" -CMD node server.js \ No newline at end of file +CMD ["node", "server.js"] \ No newline at end of file diff --git a/app/symposia/courses/page.tsx b/app/symposia/courses/page.tsx index d164fa02..54a2cb55 100644 --- a/app/symposia/courses/page.tsx +++ b/app/symposia/courses/page.tsx @@ -7,8 +7,6 @@ import { Suspense } from "react"; export const metadata = {}; -export const dynamic = "force-dynamic"; - export default async function CoursesPage() { return ( diff --git a/cspell.json b/cspell.json index 973a9b1f..46e2f081 100644 --- a/cspell.json +++ b/cspell.json @@ -14,7 +14,8 @@ "next.config.mjs", ".env", ".env.*", - "cspell.json" + "cspell.json", + "Dockerfile" ], "dictionaryDefinitions": [], "dictionaries": [],