nimuli/docker/app/Dockerfile

59 lines
1.5 KiB
Docker

FROM composer:2 AS builder
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install \
--no-dev \
--no-scripts \
--no-interaction \
--optimize-autoloader \
--prefer-dist \
--ignore-platform-reqs
COPY . .
RUN composer dump-autoload --optimize --no-dev --ignore-platform-reqs
FROM dunglas/frankenphp:php8.4-alpine
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions \
&& apk add --no-cache git curl \
&& install-php-extensions \
pdo_mysql \
redis \
bcmath \
gd \
intl \
zip \
opcache \
pcntl \
sockets \
exif
RUN deluser www-data 2>/dev/null || true \
&& delgroup www-data 2>/dev/null || true \
&& addgroup -g 1000 www-data \
&& adduser -u 1000 -G www-data -s /bin/sh -D www-data
WORKDIR /var/www/html
COPY --from=builder --chown=www-data:www-data /app .
RUN mkdir -p storage/logs storage/framework/cache storage/framework/sessions \
storage/framework/views bootstrap/cache \
&& chown -R www-data:www-data storage bootstrap/cache \
&& chmod -R 775 storage bootstrap/cache
USER www-data
EXPOSE 80
CMD ["php", "artisan", "octane:start", "--server=frankenphp", "--host=0.0.0.0", "--port=80", "--admin-port=2019", "--workers=auto"]