FROM node:20 AS frontend_builder WORKDIR /app/uuid-browser-2-app COPY uuid-browser-2-app/package.json uuid-browser-2-app/package-lock.json ./ RUN npm ci COPY uuid-browser-2-app/ ./ RUN npm run build FROM composer:2 as composer_builder WORKDIR /app COPY composer.json composer.lock ./ RUN composer install --no-dev --optimize-autoloader FROM dunglas/frankenphp WORKDIR /app COPY public/ ./public COPY src/ ./src COPY --from=composer_builder /app/vendor ./vendor # Copy built frontend RUN mkdir -p ./public/ai RUN mkdir -p ./public/assets COPY --from=frontend_builder /app/uuid-browser-2-app/dist ./public/ai RUN mv ./public/ai/assets ./public RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" RUN sed -i 's/^\s*expose_php\s*=.*/expose_php = Off/' "$PHP_INI_DIR/php.ini" ARG USER=appuser RUN \ # Use "adduser -D ${USER}" for alpine based distros useradd ${USER}; \ # Remove default capability setcap -r /usr/local/bin/frankenphp; \ # Give write access to /data/caddy and /config/caddy chown -R ${USER}:${USER} /data/caddy && chown -R ${USER}:${USER} /config/caddy USER ${USER} LABEL "org.opencontainers.image.description"="Cool und Lässig uuid" LABEL "org.opencontainers.image.source"="https://git.hannover.ccc.de/lubiana/uuid" LABEL "org.opencontainers.image.title"="UUID Service" LABEL "org.opencontainers.image.url"="https://uuid.php.fail/" LABEL "org.opencontainers.image.vendor"="lubiana" LABEL "org.opencontainers.image.version"="v1.3.3.7"