FROM node:22-alpine3.23@sha256:8516dce0483394d5708d4b2ee6cacb79fb1d617ea4e2787c2120bcca92ce372e AS frontend-assets WORKDIR /build COPY package.json package-lock.json ./ RUN npm ci COPY telemetry/ ./telemetry/ COPY scripts/build-vendor.mjs ./scripts/build-vendor.mjs RUN npm run build:vendor FROM httpd:alpine3.23@sha256:4a15e9c73f25334bc03cfb3c692c9adfc103bb46ca89cee1f0b9a5fcbc7b21f6 COPY admin/ /usr/local/apache2/htdocs/admin/ COPY department/ /usr/local/apache2/htdocs/department/ COPY edu-office/ /usr/local/apache2/htdocs/edu-office/ COPY student/ /usr/local/apache2/htdocs/student/ COPY teacher/ /usr/local/apache2/htdocs/teacher/ COPY index.html script.js style.css theme-toggle.js auth-session.js telemetry.js /usr/local/apache2/htdocs/ COPY --from=frontend-assets /build/dist/vendor/ /usr/local/apache2/htdocs/vendor/ COPY security.conf /usr/local/apache2/conf/extra/magistr-security.conf COPY proxy.conf /usr/local/apache2/conf/extra/magistr-proxy.conf # Сервер раздаёт same-origin ресурсы и проксирует API во внутреннюю сеть Compose. RUN sed -i 's/^#LoadModule headers_module/LoadModule headers_module/' /usr/local/apache2/conf/httpd.conf \ && sed -i 's/^#LoadModule proxy_module/LoadModule proxy_module/' /usr/local/apache2/conf/httpd.conf \ && sed -i 's/^#LoadModule proxy_http_module/LoadModule proxy_http_module/' /usr/local/apache2/conf/httpd.conf \ && printf '\nInclude conf/extra/magistr-security.conf\nInclude conf/extra/magistr-proxy.conf\n' >> /usr/local/apache2/conf/httpd.conf \ && chown -R www-data:www-data /usr/local/apache2/htdocs/