diff --git a/.env b/.env new file mode 100644 index 00000000..dc96c78c --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +NEXT_PUBLIC_DOCSEARCH_APP_ID=APP_NEXT_PUBLIC_DOCSEARCH_APP_ID +NEXT_PUBLIC_DOCSEARCH_API_KEY=APP_NEXT_PUBLIC_DOCSEARCH_API_KEY +NEXT_PUBLIC_DOCSEARCH_INDEX_NAME=APP_NEXT_PUBLIC_DOCSEARCH_INDEX_NAME \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 984f7657..1015a188 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -16,15 +16,17 @@ RUN npm install --production # Copy all files COPY ./ ./ +COPY /docker/entrypoint.sh ./entrypoint.sh + # Build app RUN npm run build +RUN chmod u+x /usr/app/entrypoint.sh + # Expose the listening port EXPOSE 3000 -# Run container as non-root (unprivileged) user -# The node user is provided in the Node.js Alpine base image -USER node +# apply env variables to the Nextjs .env file +ENTRYPOINT ["/usr/app/entrypoint.sh"] -# Run npm start script with PM2 when container starts -CMD [ "pm2-runtime", "npm", "--", "start" ] \ No newline at end of file +CMD npm run start \ No newline at end of file diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 00000000..9a3c381f --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# this script will check for the following NEXT_* environment variables passed via Docker environment (-e) and apply them +# to the Nextjs. +# The properties that will be replaced and have to start with APP_ prefix in the .env file + +set -ex +NEXT_PUBLIC_DOCSEARCH_APP_ID=${NEXT_PUBLIC_DOCSEARCH_APP_ID:-"none"} +NEXT_PUBLIC_DOCSEARCH_API_KEY=${NEXT_PUBLIC_DOCSEARCH_API_KEY:-"none"} +NEXT_PUBLIC_DOCSEARCH_INDEX_NAME=${NEXT_PUBLIC_DOCSEARCH_INDEX_NAME:"none"} + +find /usr/app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#APP_NEXT_PUBLIC_DOCSEARCH_APP_ID#${NEXT_PUBLIC_DOCSEARCH_APP_ID}#g" +find /usr/app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#APP_NEXT_PUBLIC_DOCSEARCH_API_KEY#${NEXT_PUBLIC_DOCSEARCH_API_KEY}#g" +find /usr/app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#APP_NEXT_PUBLIC_DOCSEARCH_INDEX_NAME#${NEXT_PUBLIC_DOCSEARCH_INDEX_NAME}#g" + +echo "starting Nextjs" +exec "$@" \ No newline at end of file