82 lines
2.3 KiB
Docker
Executable File
82 lines
2.3 KiB
Docker
Executable File
FROM php:8.3-cli AS vendor
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
git \
|
|
libfreetype6-dev \
|
|
libicu-dev \
|
|
libjpeg62-turbo-dev \
|
|
libpng-dev \
|
|
libzip-dev \
|
|
unzip \
|
|
zip \
|
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
&& docker-php-ext-install -j"$(nproc)" gd intl zip \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
WORKDIR /app
|
|
COPY composer.json composer.lock ./
|
|
RUN composer install \
|
|
--no-dev \
|
|
--prefer-dist \
|
|
--no-interaction \
|
|
--no-progress \
|
|
--no-scripts \
|
|
--optimize-autoloader
|
|
|
|
FROM node:20-bookworm-slim AS frontend
|
|
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json* ./
|
|
RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
|
|
COPY --from=vendor /app/vendor ./vendor
|
|
COPY resources ./resources
|
|
COPY public ./public
|
|
COPY vite.config.js package.json postcss.config.js tailwind.config.js ./
|
|
RUN npm run build
|
|
|
|
FROM php:8.3-fpm AS runtime
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
default-mysql-client \
|
|
git \
|
|
libfreetype6-dev \
|
|
libicu-dev \
|
|
libjpeg62-turbo-dev \
|
|
libonig-dev \
|
|
libpng-dev \
|
|
libxml2-dev \
|
|
libzip-dev \
|
|
unzip \
|
|
zip \
|
|
mdbtools \
|
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
&& docker-php-ext-install -j"$(nproc)" bcmath exif gd intl mbstring opcache pcntl pdo_mysql zip \
|
|
&& pecl install redis \
|
|
&& docker-php-ext-enable redis \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
WORKDIR /var/www
|
|
|
|
COPY --chown=www-data:www-data . .
|
|
COPY --chown=www-data:www-data --from=vendor /app/vendor ./vendor
|
|
COPY --chown=www-data:www-data --from=frontend /app/public/build ./public/build
|
|
COPY --chown=www-data:www-data docker/entrypoint.sh /entrypoint.sh
|
|
COPY --chown=www-data:www-data docker/php/local.ini /usr/local/etc/php/conf.d/99-netgescon.ini
|
|
|
|
RUN chmod +x /entrypoint.sh \
|
|
&& mkdir -p storage/framework/cache/data storage/framework/sessions storage/framework/views bootstrap/cache /opt/netgescon \
|
|
&& cp -a public /opt/netgescon/public \
|
|
&& composer dump-autoload --no-dev --optimize \
|
|
&& chmod -R 775 storage bootstrap/cache
|
|
|
|
EXPOSE 9000
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
CMD ["php-fpm"] |