From a24236ebd4e69587eea765aa4f2e22f2ca4534ae Mon Sep 17 00:00:00 2001 From: biersoeckli Date: Mon, 18 Nov 2024 10:33:09 +0000 Subject: [PATCH] updated dockerfile for custom server.js file --- .dockerignore | 3 ++- .gitignore | 3 ++- Dockerfile | 14 +++++----- bun.lockb | Bin 292930 -> 293434 bytes package.json | 4 ++- setup.sh | 59 +++++++++++++++++++++++++++++++++++++++++++ tsconfig.server.json | 17 +++++++++++++ 7 files changed, 90 insertions(+), 10 deletions(-) create mode 100644 tsconfig.server.json diff --git a/.dockerignore b/.dockerignore index 7dce7fb..8f12398 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,4 +9,5 @@ README.md .git db internal -shared \ No newline at end of file +shared +dist \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6000d6b..dbb07ed 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,5 @@ kube-config.config_clusteradmin kube-config.config_old kube-config.config_restricted internal -shared \ No newline at end of file +shared +dist \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 4faf1f2..f7a6ddb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,6 +24,7 @@ COPY . . RUN yarn run prisma-generate-build RUN yarn run build +RUN rm -rf ./next/standalone # Production image, copy all the files and run next FROM base AS runner @@ -38,15 +39,14 @@ RUN adduser --system --uid 1001 nextjs COPY --from=builder /app/public ./public -# Set the correct permission for prerender cache -RUN mkdir .next -RUN chown nextjs:nodejs .next - # Automatically leverage output traces to reduce image size # https://nextjs.org/docs/advanced-features/output-file-tracing COPY --from=builder --chown=nextjs:nodejs /app/prisma ./prisma -COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static +COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next +COPY --from=builder --chown=nextjs:nodejs /app/dist ./dist +COPY --from=builder --chown=nextjs:nodejs /app/dist ./dist +COPY --from=builder --chown=nextjs:nodejs /app/package.json ./package.json +COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules USER nextjs @@ -54,4 +54,4 @@ ENV PORT=3000 # server.js is created by next build from the standalone output # https://nextjs.org/docs/pages/api-reference/next-config-js/output -CMD HOSTNAME="0.0.0.0" node server.js \ No newline at end of file +CMD HOSTNAME="0.0.0.0" npm run start-prod \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 96c0fbd054057dad00c4c7bcc2d38e580983da25..fed80d1b8ef26c29c49bdb43863a633d0e00db4b 100755 GIT binary patch delta 51831 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 D@;0ET delta 51877 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
O7}v{ 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 quick-stack.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: quickstack-internal-pvc + namespace: quickstack +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: quickstack + namespace: quickstack +spec: + replicas: 1 + selector: + matchLabels: + app: quickstack + template: + metadata: + labels: + app: quickstack + spec: + strategy: + type: Recreate + containers: + - name: quickstack-container + image: quickstack/quickstack:latest + imagePullPolicy: "Always" + volumeMounts: + - name: quickstack-internal-pvc + mountPath: /mnt/internal + volumes: + - name: quickstack-internal-pvc + persistentVolumeClaim: + claimName: quickstack-internal-pvc +--- +apiVersion: v1 +kind: Service +metadata: + name: quickstack-svc + namespace: quickstack +spec: + selector: + app: quickstack + ports: + - nodePort: 3000 + protocol: TCP + port: 3000 + targetPort: 3000 +EOF + # evaluate url to add node to cluster joinTokenForOtherNodes=$(sudo cat /var/lib/rancher/k3s/server/node-token) echo "To add a worker node to the cluster, run the following command on the worker node:" diff --git a/tsconfig.server.json b/tsconfig.server.json new file mode 100644 index 0000000..a23db08 --- /dev/null +++ b/tsconfig.server.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "moduleResolution": "node", + "module": "commonjs", + "outDir": "dist", + "lib": [ + "ES2023" + ], + "target": "ES2023", + "isolatedModules": false, + "noEmit": false + }, + "include": [ + "src/server.ts" + ] +} \ No newline at end of file