Files
cleftlipdata/Dockerfile
T

66 lines
1.6 KiB
Docker

FROM node:20-alpine AS node-build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM php:8.2-cli-alpine AS composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader --no-scripts \
--ignore-platform-req=ext-gd \
--ignore-platform-req=ext-zip
COPY . .
RUN composer install --no-dev --optimize-autoloader \
--ignore-platform-req=ext-gd \
--ignore-platform-req=ext-zip
FROM php:8.2-fpm-alpine AS ext-builder
RUN apk add --no-cache \
libpng-dev \
libjpeg-turbo-dev \
freetype-dev \
libzip-dev \
icu-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) \
pdo_mysql \
gd \
zip \
intl \
bcmath
FROM php:8.2-fpm-alpine AS runtime
RUN apk add --no-cache \
libpng \
libjpeg-turbo \
freetype \
libzip \
icu-libs \
mariadb-client \
su-exec
COPY --from=ext-builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/
COPY --from=ext-builder /usr/local/etc/php/conf.d/docker-php-ext-*.ini /usr/local/etc/php/conf.d/
RUN addgroup -g 1001 -S app && adduser -S app -u 1001 -G app
WORKDIR /var/www/html
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
COPY --chown=app:app . /app-source
COPY --from=composer --chown=app:app /app/vendor /app-source/vendor
COPY --from=node-build --chown=app:app /app/public/build /app-source/public/build
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["php-fpm"]