Skip to content

Commit

Permalink
"cross-build" the assets
Browse files Browse the repository at this point in the history
  • Loading branch information
nanaya committed Sep 13, 2023
1 parent c152f27 commit 65d07f2
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 12 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
with:
# list of Docker images to use as base name for tags
images: |
pppy/osu-web
nanaya/osu-web
# generate Docker tags based on the following events/attributes
# on tag event: tag using git tag, and as latest if the tag doesn't contain hyphens (pre-releases)
# on push event: tag using git sha, branch name and as latest-dev
Expand Down
59 changes: 48 additions & 11 deletions Dockerfile.deployment
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
FROM debian:11
FROM --platform=$BUILDPLATFORM debian:11 as buildenv

RUN apt update
RUN DEBIAN_FRONTEND=noninteractive apt install -y apt-transport-https lsb-release ca-certificates curl
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https lsb-release ca-certificates curl gnupg

RUN curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
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/setup_16.x | bash -
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_16.x nodistro main" > /etc/apt/sources.list.d/nodesource.list

RUN apt update
RUN DEBIAN_FRONTEND=noninteractive apt install -y \
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \
build-essential \
git \
jhead \
nginx \
nodejs \
php8.2 \
php8.2-common \
Expand All @@ -38,18 +37,48 @@ 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-autoloader --no-dev
RUN composer install --no-dev --no-scripts

COPY package.json yarn.lock ./
RUN yarn --prod --ignore-optional --frozen-lockfile


FROM debian:11 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.2 \
php8.2-common \
php8.2-curl \
php8.2-ds \
php8.2-gd \
php8.2-intl \
php8.2-mbstring \
php8.2-mysql \
php8.2-redis \
php8.2-sqlite3 \
php8.2-swoole \
php8.2-tokenizer \
php8.2-xml \
php8.2-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
RUN composer dump-autoload

ARG APP_URL
ARG DOCS_URL
Expand All @@ -60,9 +89,17 @@ 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
Expand Down

0 comments on commit 65d07f2

Please sign in to comment.