FROM --platform=$BUILDPLATFORM debian:12 as buildenv RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https lsb-release ca-certificates curl gnupg RUN curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg RUN echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg RUN echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" > /etc/apt/sources.list.d/nodesource.list RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ build-essential \ git \ nodejs \ php8.3 \ php8.3-common \ php8.3-curl \ php8.3-ds \ php8.3-gd \ php8.3-intl \ php8.3-mbstring \ php8.3-mysql \ php8.3-redis \ php8.3-sqlite3 \ php8.3-swoole \ php8.3-tokenizer \ php8.3-xml \ php8.3-zip \ zip RUN npm install -g yarn WORKDIR /app RUN curl -L "https://getcomposer.org/download/latest-2.x/composer.phar" > /usr/local/bin/composer && chmod 755 /usr/local/bin/composer COPY composer.json composer.lock ./ RUN composer install --no-dev --no-scripts COPY package.json yarn.lock ./ RUN yarn --prod --ignore-optional --frozen-lockfile FROM debian:12 as runenv RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https lsb-release ca-certificates curl RUN curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg RUN echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ jhead \ nginx \ php8.3 \ php8.3-common \ php8.3-curl \ php8.3-ds \ php8.3-gd \ php8.3-intl \ php8.3-mbstring \ php8.3-mysql \ php8.3-redis \ php8.3-sqlite3 \ php8.3-swoole \ php8.3-tokenizer \ php8.3-xml \ php8.3-zip RUN rm -f /var/log/nginx/access.log /var/log/nginx/error.log && \ ln -s /dev/stdout /var/log/nginx/access.log && \ ln -s /dev/stderr /var/log/nginx/error.log FROM buildenv as build COPY . . RUN mkdir -p bootstrap/cache storage/logs storage/framework/cache storage/framework/views storage/framework/sessions public/uploads public/uploads-avatar public/uploads-replay ARG APP_URL ARG DOCS_URL RUN yarn production RUN php artisan ip2asn:update RUN php artisan scribe:generate RUN rm -rf node_modules RUN composer dump-autoload ARG GIT_SHA RUN printf "%s" "$GIT_SHA" > version FROM runenv as run COPY --from=build /app /app WORKDIR /app RUN useradd -m osuweb RUN chown -R osuweb /var/lib/nginx bootstrap/cache storage USER osuweb ENV LOG_CHANNEL stderr EXPOSE 8000 EXPOSE 8080 ENTRYPOINT ["/app/docker/deployment/entrypoint.sh"]