Support both build-time and run-time values for WEBAPP_URL. Improve re-build time, if just the WEBAPP_URL is changed.
This commit is contained in:
13
Dockerfile
13
Dockerfile
@@ -8,9 +8,7 @@ ARG NEXTAUTH_SECRET=secret
|
||||
ARG CALENDSO_ENCRYPTION_KEY=secret
|
||||
ARG MAX_OLD_SPACE_SIZE=4096
|
||||
|
||||
# PLACEHOLDER value is compiled in during build, but will be replaced it at runtime
|
||||
# see: scripts/replace-placeholders.sh
|
||||
ENV NEXT_PUBLIC_WEBAPP_URL=https://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \
|
||||
ENV NEXT_PUBLIC_WEBAPP_URL=http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \
|
||||
NEXT_PUBLIC_LICENSE_CONSENT=$NEXT_PUBLIC_LICENSE_CONSENT \
|
||||
CALCOM_TELEMETRY_DISABLED=$CALCOM_TELEMETRY_DISABLED \
|
||||
DATABASE_URL=$DATABASE_URL \
|
||||
@@ -30,6 +28,8 @@ RUN yarn build
|
||||
FROM node:16 as runner
|
||||
|
||||
WORKDIR /calcom
|
||||
ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
|
||||
|
||||
ENV NODE_ENV production
|
||||
|
||||
RUN apt-get update && \
|
||||
@@ -44,5 +44,12 @@ COPY --from=builder /calcom/apps/web ./apps/web
|
||||
COPY --from=builder /calcom/packages/prisma/schema.prisma ./prisma/schema.prisma
|
||||
COPY scripts scripts
|
||||
|
||||
# Save value used during this build stage. If NEXT_PUBLIC_WEBAPP_URL and BUILT_NEXT_PUBLIC_WEBAPP_URL differ at
|
||||
# run-time, then start.sh will find/replace static values again.
|
||||
ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \
|
||||
BUILT_NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL
|
||||
|
||||
RUN scripts/replace-placeholder.sh http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER ${NEXT_PUBLIC_WEBAPP_URL}
|
||||
|
||||
EXPOSE 3000
|
||||
CMD ["/calcom/scripts/start.sh"]
|
||||
|
||||
@@ -112,7 +112,7 @@ Updating these variables is not required for evaluation, but is required for run
|
||||
|
||||
| Variable | Description | Required | Default |
|
||||
| --- | --- | --- | --- |
|
||||
| NEXT_PUBLIC_WEBAPP_URL | Base URL injected into static files | required | `http://localhost:3000` |
|
||||
| NEXT_PUBLIC_WEBAPP_URL | Base URL injected into static files | optional | `http://localhost:3000` |
|
||||
| NEXT_PUBLIC_LICENSE_CONSENT | license consent - true/false | | |
|
||||
| CALCOM_TELEMETRY_DISABLED | Allow cal.com to collect anonymous usage data (set to `1` to disable) | | |
|
||||
| DATABASE_URL | database url with credentials | required | `postgresql://unicorn_user:magical_password@database:5432/calendso` |
|
||||
@@ -125,6 +125,7 @@ These variables must also be provided at runtime
|
||||
|
||||
| Variable | Description | Required | Default |
|
||||
| --- | --- | --- | --- |
|
||||
| NEXT_PUBLIC_WEBAPP_URL | Base URL of the site. NOTE: if this value differs from the value used at build-time, there will be a slight delay during container start (to update the statically built files). | optional | `http://localhost:3000` |
|
||||
| CALCOM_LICENSE_KEY | Enterprise License Key | | |
|
||||
| NEXTAUTH_SECRET | must match build variable | required | `secret` |
|
||||
| CALENDSO_ENCRYPTION_KEY | must match build variable | required | `secret` |
|
||||
|
||||
16
scripts/replace-placeholder.sh
Executable file
16
scripts/replace-placeholder.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
FROM=$1
|
||||
TO=$2
|
||||
|
||||
if [ "${FROM}" = "${TO}" ]; then
|
||||
echo "Nothing to replace, the value is already set to ${TO}."
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Only peform action if $FROM and $TO are different.
|
||||
echo "Replacing all statically built instances of $FROM with $TO."
|
||||
|
||||
find apps/web/.next/ apps/web/public -type f |
|
||||
while read file; do
|
||||
sed -i "s|$FROM|$TO|g" "$file"
|
||||
done
|
||||
@@ -1,5 +0,0 @@
|
||||
# Find and replace placeholder values with runtime-specific environment values
|
||||
find apps/web/.next/ apps/web/public -type f |
|
||||
while read file; do
|
||||
sed -i "s|https://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER|$NEXT_PUBLIC_WEBAPP_URL|g" "$file"
|
||||
done
|
||||
@@ -1,7 +1,10 @@
|
||||
#!/bin/sh
|
||||
set -x
|
||||
|
||||
scripts/replace-placeholders.sh
|
||||
# Replace the statically built BUILT_NEXT_PUBLIC_WEBAPP_URL with run-time NEXT_PUBLIC_WEBAPP_URL
|
||||
# NOTE: if these values are the same, this will be skipped.
|
||||
scripts/replace-placeholder.sh "$BUILT_NEXT_PUBLIC_WEBAPP_URL" "$NEXT_PUBLIC_WEBAPP_URL"
|
||||
|
||||
scripts/wait-for-it.sh ${DATABASE_HOST} -- echo "database is up"
|
||||
npx prisma migrate deploy --schema /calcom/packages/prisma/schema.prisma
|
||||
npx ts-node --transpile-only /calcom/packages/prisma/seed-app-store.ts
|
||||
|
||||
Reference in New Issue
Block a user