summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Hunt <lizhunt@amazon.com>2025-01-07 09:13:13 -0800
committerElizabeth Hunt <lizhunt@amazon.com>2025-01-07 09:13:13 -0800
commit2d5fce1da2c0cc0555c47222484b73c008a5e3b0 (patch)
tree2e262ad154a141f52a907f913644ba3f0bb0a26a
parentb97f3b42e1bad5753728315b5c7ebdacf6f81172 (diff)
downloadpenguin-new-tab-2d5fce1da2c0cc0555c47222484b73c008a5e3b0.tar.gz
penguin-new-tab-2d5fce1da2c0cc0555c47222484b73c008a5e3b0.zip
drone it up yo
-rw-r--r--.drone.yml15
-rw-r--r--Dockerfile66
-rw-r--r--lib/data-context.ts2
3 files changed, 82 insertions, 1 deletions
diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 0000000..9d69205
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,15 @@
+---
+kind: pipeline
+type: docker
+name: cicd
+
+steps:
+ - name: ci
+ image: plugins/docker
+ settings:
+ username:
+ from_secret: gitea_packpub_username
+ password:
+ from_secret: gitea_packpub_password
+ registry: git.simponic.xyz
+ repo: git.simponic.xyz/simponic/penguin-new-tab
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..034cba8
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,66 @@
+# syntax=docker.io/docker/dockerfile:1
+
+FROM node:22-alpine AS base
+
+# Install dependencies only when needed
+FROM base AS deps
+# 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
+
+# Install dependencies based on the preferred package manager
+COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./
+RUN \
+ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
+ elif [ -f package-lock.json ]; then npm ci; \
+ elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \
+ else echo "Lockfile not found." && exit 1; \
+ fi
+
+
+# Rebuild the source code only when needed
+FROM base AS builder
+WORKDIR /app
+COPY --from=deps /app/node_modules ./node_modules
+COPY . .
+
+# Next.js collects completely anonymous telemetry data about general usage.
+# Learn more here: https://nextjs.org/telemetry
+# Uncomment the following line in case you want to disable telemetry during the build.
+# ENV NEXT_TELEMETRY_DISABLED=1
+
+RUN \
+ if [ -f yarn.lock ]; then yarn run build; \
+ elif [ -f package-lock.json ]; then npm run build; \
+ elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \
+ else echo "Lockfile not found." && exit 1; \
+ fi
+
+# Production image, copy all the files and run next
+FROM base AS runner
+WORKDIR /app
+
+ENV NODE_ENV=production
+# Uncomment the following line in case you want to disable telemetry during runtime.
+# ENV NEXT_TELEMETRY_DISABLED=1
+
+RUN addgroup --system --gid 1001 nodejs
+RUN adduser --system --uid 1001 nextjs
+
+COPY --from=builder /app/public ./public
+
+# Automatically leverage output traces to reduce image size
+# https://nextjs.org/docs/advanced-features/output-file-tracing
+COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
+COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
+
+USER nextjs
+
+EXPOSE 3000
+
+ENV PORT=3000
+
+# server.js is created by next build from the standalone output
+# https://nextjs.org/docs/pages/api-reference/config/next-config-js/output
+ENV HOSTNAME="0.0.0.0"
+CMD ["node", "server.js"]
diff --git a/lib/data-context.ts b/lib/data-context.ts
index f4c09c7..6779b92 100644
--- a/lib/data-context.ts
+++ b/lib/data-context.ts
@@ -49,7 +49,7 @@ export const fetchWeather = async (): Promise<Weather> => {
};
export const fetchWhois = async (): Promise<WhoisUpdate[]> =>
- fetch("https://whois.simponic.xyz/updates")
+ fetch("https://whois.simponic.xyz/api/updates")
.then((response) => response.json())
.then(
(data) =>