From 2af066038351ab0634c359a688fe712a539992b4 Mon Sep 17 00:00:00 2001 From: Jan T Date: Wed, 14 Feb 2024 17:18:30 +0200 Subject: Optimize docker image size (#91) * Move prisma to runtime dependencies * Optimize Dockerfile and build script * Fix: remove mention of generated next-env.d.ts in Dockerfile * Add missing reset.d.ts file to Dockerfile * Remove compression steps from Dockerfile and entrypoint script * Add an env file with mocked env vars added for Docker production builds * Use server actions to get runtime env vars * Refactor types and names * Rollback serverActions, use parsed Zod object for runtime env * Reintroduce featureFlags object to avoid passing secret envs to the frontend * Improve string to boolean coercion Co-authored-by: Sebastien Castiel * Run prettier autoformat * Fix type issue, rename function to match behaviour better --------- Co-authored-by: Lauri Vuorela Co-authored-by: Sebastien Castiel --- scripts/build-image.sh | 3 --- scripts/build.env | 22 ++++++++++++++++++++++ scripts/container-entrypoint.sh | 5 ++++- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 scripts/build.env (limited to 'scripts') diff --git a/scripts/build-image.sh b/scripts/build-image.sh index 95b8acb..c900089 100755 --- a/scripts/build-image.sh +++ b/scripts/build-image.sh @@ -5,9 +5,6 @@ SPLIIT_VERSION=$(node -p -e "require('./package.json').version") # we need to set dummy data for POSTGRES env vars in order for build not to fail docker buildx build \ - --no-cache \ - --build-arg POSTGRES_PRISMA_URL=postgresql://build:@db \ - --build-arg POSTGRES_URL_NON_POOLING=postgresql://build:@db \ -t ${SPLIIT_APP_NAME}:${SPLIIT_VERSION} \ -t ${SPLIIT_APP_NAME}:latest \ . diff --git a/scripts/build.env b/scripts/build.env new file mode 100644 index 0000000..98b3fac --- /dev/null +++ b/scripts/build.env @@ -0,0 +1,22 @@ +# build file that contains all possible env vars with mocked values +# as most of them are used at build time in order to have the production build to work properly + +# db +POSTGRES_PASSWORD=1234 + +# app +POSTGRES_PRISMA_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db +POSTGRES_URL_NON_POOLING=postgresql://postgres:${POSTGRES_PASSWORD}@db + +# app-minio +NEXT_PUBLIC_ENABLE_EXPENSE_DOCUMENTS=false +S3_UPLOAD_KEY=AAAAAAAAAAAAAAAAAAAA +S3_UPLOAD_SECRET=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +S3_UPLOAD_BUCKET=spliit +S3_UPLOAD_REGION=eu-north-1 +S3_UPLOAD_ENDPOINT=s3://minio.example.com + +# app-openai +NEXT_PUBLIC_ENABLE_RECEIPT_EXTRACT=false +OPENAI_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXX +NEXT_PUBLIC_ENABLE_CATEGORY_EXTRACT=false diff --git a/scripts/container-entrypoint.sh b/scripts/container-entrypoint.sh index 364787e..5871314 100755 --- a/scripts/container-entrypoint.sh +++ b/scripts/container-entrypoint.sh @@ -1,3 +1,6 @@ #!/bin/bash -prisma migrate deploy + +set -euxo pipefail + +npx prisma migrate deploy npm run start -- cgit v1.3