the browser-facing portion of osu!
at master 3.1 kB view raw
1FROM --platform=$BUILDPLATFORM debian:12 as buildenv 2 3RUN apt-get update 4RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https lsb-release ca-certificates curl gnupg 5 6RUN curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg 7RUN 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 8 9RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg 10RUN 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 11 12RUN apt-get update 13RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ 14 build-essential \ 15 git \ 16 nodejs \ 17 php8.3 \ 18 php8.3-common \ 19 php8.3-curl \ 20 php8.3-ds \ 21 php8.3-gd \ 22 php8.3-intl \ 23 php8.3-mbstring \ 24 php8.3-mysql \ 25 php8.3-redis \ 26 php8.3-sqlite3 \ 27 php8.3-swoole \ 28 php8.3-tokenizer \ 29 php8.3-xml \ 30 php8.3-zip \ 31 zip 32 33RUN npm install -g yarn 34 35WORKDIR /app 36 37RUN curl -L "https://getcomposer.org/download/latest-2.x/composer.phar" > /usr/local/bin/composer && chmod 755 /usr/local/bin/composer 38 39COPY composer.json composer.lock ./ 40RUN composer install --no-dev --no-scripts 41 42COPY package.json yarn.lock ./ 43RUN yarn --prod --ignore-optional --frozen-lockfile 44 45 46FROM debian:12 as runenv 47 48RUN apt-get update 49RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https lsb-release ca-certificates curl 50 51RUN curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg 52RUN 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 53 54RUN apt-get update 55RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \ 56 jhead \ 57 nginx \ 58 php8.3 \ 59 php8.3-common \ 60 php8.3-curl \ 61 php8.3-ds \ 62 php8.3-gd \ 63 php8.3-intl \ 64 php8.3-mbstring \ 65 php8.3-mysql \ 66 php8.3-redis \ 67 php8.3-sqlite3 \ 68 php8.3-swoole \ 69 php8.3-tokenizer \ 70 php8.3-xml \ 71 php8.3-zip 72 73RUN rm -f /var/log/nginx/access.log /var/log/nginx/error.log && \ 74 ln -s /dev/stdout /var/log/nginx/access.log && \ 75 ln -s /dev/stderr /var/log/nginx/error.log 76 77 78FROM buildenv as build 79 80COPY . . 81RUN mkdir -p bootstrap/cache storage/logs storage/framework/cache storage/framework/views storage/framework/sessions public/uploads public/uploads-avatar public/uploads-replay 82 83ARG APP_URL 84ARG DOCS_URL 85RUN yarn production 86 87RUN php artisan ip2asn:update 88RUN php artisan scribe:generate 89 90RUN rm -rf node_modules 91 92RUN composer dump-autoload 93 94ARG GIT_SHA 95RUN printf "%s" "$GIT_SHA" > version 96 97 98FROM runenv as run 99 100COPY --from=build /app /app 101WORKDIR /app 102 103RUN useradd -m osuweb 104RUN chown -R osuweb /var/lib/nginx bootstrap/cache storage 105USER osuweb 106ENV LOG_CHANNEL stderr 107 108EXPOSE 8000 109EXPOSE 8080 110 111ENTRYPOINT ["/app/docker/deployment/entrypoint.sh"]