diff --git a/.docker/server.bake.Dockerfile b/.docker/server.bake.Dockerfile index 7c756ee72..5fae3e9ec 100644 --- a/.docker/server.bake.Dockerfile +++ b/.docker/server.bake.Dockerfile @@ -16,44 +16,54 @@ FROM ubuntu:24.04 AS web-base #### SERVER #### FROM web-base AS server -ARG PRODUCT_VERSION -ARG BUILD_ROOT -ARG TARGETARCH + ARG PRODUCT_VERSION + ARG COMPANY_NAME + ARG BUILD_ROOT + ARG TARGETARCH + ARG PRODUCT_NAME -ENV PRODUCT_VERSION=${PRODUCT_VERSION} + ARG BRANDING_DIR -COPY server/Common/package*.json /server/Common/ -RUN --mount=type=cache,target=/root/.npm cd /server/Common && npm install + ENV PRODUCT_VERSION=${PRODUCT_VERSION} -COPY server/DocService/package*.json /server/DocService/ -RUN --mount=type=cache,target=/root/.npm cd /server/DocService && npm install + COPY server/Common/package*.json /server/Common/ + RUN --mount=type=cache,target=/root/.npm cd /server/Common && npm install -COPY server/FileConverter/package*.json /server/FileConverter/ -RUN --mount=type=cache,target=/root/.npm cd /server/FileConverter && npm install + COPY server/DocService/package*.json /server/DocService/ + RUN --mount=type=cache,target=/root/.npm cd /server/DocService && npm install -COPY server/Metrics/package*.json /server/Metrics/ -RUN --mount=type=cache,target=/root/.npm cd /server/Metrics && npm install + COPY server/FileConverter/package*.json /server/FileConverter/ + RUN --mount=type=cache,target=/root/.npm cd /server/FileConverter && npm install -COPY server/AdminPanel/server/package*.json /server/AdminPanel/server/ -RUN --mount=type=cache,target=/root/.npm cd /server/AdminPanel/server && npm install + COPY server/Metrics/package*.json /server/Metrics/ + RUN --mount=type=cache,target=/root/.npm cd /server/Metrics && npm install -COPY server/AdminPanel/client/package*.json /server/AdminPanel/client/ -RUN --mount=type=cache,target=/root/.npm cd /server/AdminPanel/client && npm install + COPY server/AdminPanel/server/package*.json /server/AdminPanel/server/ + RUN --mount=type=cache,target=/root/.npm cd /server/AdminPanel/server && npm install -COPY server/ /server + COPY server/AdminPanel/client/package*.json /server/AdminPanel/client/ + RUN --mount=type=cache,target=/root/.npm cd /server/AdminPanel/client && npm install -ENV BUILD_ROOT=${BUILD_ROOT} + COPY server/ /server -RUN TARGETARCH_PKG=$(echo "$TARGETARCH" | sed 's/amd64/x64/') && \ - cd /server/Common && \ - sed "s|\(const buildVersion = \).*|\1'${PRODUCT_VERSION}';|" -i sources/commondefines.js && \ - cd /server/DocService && \ - pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/docservice" && \ - cd /server/FileConverter && \ - pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/fileconverter" && \ - cd /server/Metrics && \ - pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/metrics" && \ - cd /server/AdminPanel/server && \ - pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/adminpanel" + ### Branding + COPY ${BRANDING_DIR}/server/ /server -RUN cd /server/AdminPanel/client && npm run build \ No newline at end of file + ENV BUILD_ROOT=${BUILD_ROOT} + + RUN TARGETARCH_PKG=$(echo "$TARGETARCH" | sed 's/amd64/x64/') && \ + cd /server/Common && \ + sed "s|\(const buildVersion = \).*|\1'${PRODUCT_VERSION}';|" -i sources/commondefines.js && \ + cd /server/DocService && \ + pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/docservice" && \ + cd /server/FileConverter && \ + pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/fileconverter" && \ + cd /server/Metrics && \ + pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/metrics" && \ + cd /server/AdminPanel/server && \ + pkg . -t linux-"$TARGETARCH_PKG" --node-options="--max_old_space_size=4096" -o "${BUILD_ROOT}/adminpanel" + + ENV APP_NAME=${COMPANY_NAME} + + RUN cd /server/AdminPanel/client && \ + npm run build \ No newline at end of file diff --git a/AdminPanel/client/public/index.html b/AdminPanel/client/public/index.html index 6d4428d4a..ef6c8ee23 100644 --- a/AdminPanel/client/public/index.html +++ b/AdminPanel/client/public/index.html @@ -6,7 +6,7 @@ -
Enter your password to access the admin panel
The session is valid for 60 minutes.
diff --git a/AdminPanel/client/src/pages/Setup/SetupPage.js b/AdminPanel/client/src/pages/Setup/SetupPage.js index 39edbbe49..3b8cff631 100644 --- a/AdminPanel/client/src/pages/Setup/SetupPage.js +++ b/AdminPanel/client/src/pages/Setup/SetupPage.js @@ -17,6 +17,8 @@ export default function Setup() { const dispatch = useDispatch(); const buttonRef = useRef(); + const appName = process.env.APP_NAME; + const {isValid: passwordIsValid, isLoading} = usePasswordValidation(password); // Check if form can be submitted @@ -64,7 +66,7 @@ export default function Setup() { return (Initial Setup
Enter the bootstrap token from server logs and create your admin password.
diff --git a/AdminPanel/client/webpack.config.js b/AdminPanel/client/webpack.config.js index 662129eb6..9e8d5e8c6 100644 --- a/AdminPanel/client/webpack.config.js +++ b/AdminPanel/client/webpack.config.js @@ -8,6 +8,8 @@ const outputDir = process.env.BUILD_ROOT ? path.resolve(process.env.BUILD_ROOT, 'build') : path.resolve(__dirname, 'build'); +const appName = process.env.APP_NAME || 'Euro-Office'; + module.exports = (env, argv) => { const mode = argv && argv.mode ? argv.mode : 'development'; @@ -52,7 +54,10 @@ module.exports = (env, argv) => { plugins: [ new HtmlWebpackPlugin({ - template: path.join(__dirname, 'public', 'index.html') + template: path.join(__dirname, 'public', 'index.html'), + templateParameters: { + appName, + }, }), new CopyPlugin({ patterns: [ @@ -90,8 +95,9 @@ module.exports = (env, argv) => { ] }), new webpack.DefinePlugin({ - 'process.env.REACT_APP_BACKEND_URL': JSON.stringify(process.env.REACT_APP_BACKEND_URL) - }) + 'process.env.REACT_APP_BACKEND_URL': JSON.stringify(process.env.REACT_APP_BACKEND_URL), + 'process.env.APP_NAME': JSON.stringify(appName), + }), ], module: {