FROM php:8.5-fpm RUN apt-get update && apt-get install -y --no-install-recommends \ nginx \ supervisor \ postgresql-client \ libpq-dev \ libpng-dev \ libjpeg-dev \ libfreetype-dev \ libzip-dev \ git \ unzip \ locales \ curl \ gettext-base \ && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \ docker-php-ext-install -j"$(nproc)" \ pdo_pgsql \ pgsql \ gd \ zip \ exif \ bcmath COPY --from=composer:2 /usr/bin/composer /usr/bin/composer ENV PATH="/var/www/html/vendor/bin:${PATH}" WORKDIR /var/www/html # Copy composer manifest first for layer caching; install pulls Drupal from Packagist. # To use ../drupal instead, add it as a path repository in composer.json: # "repositories": [{"type": "path", "url": "../drupal/core", "options": {"symlink": false}}] # then bump drupal/core-recommended to "11.x-dev@dev" and rebuild. COPY composer.json package.json tailwind.config.js ./ RUN npm install --include=dev RUN composer config repositories.drupal composer https://packages.drupal.org/8 ## Composer requires # Core RUN composer require composer/installers:^2.3 --no-update RUN composer require drupal/core-recommended:^11 --no-update RUN composer require drupal/core-composer-scaffold:^11 --no-update RUN composer require drush/drush:"^13 || ^14" --no-update # Extra RUN composer require drupal/webform drupal/symfony_mailer drupal/claro_compact --no-update ####### RUN composer install --no-dev --optimize-autoloader --no-interaction # Overlay our site-specific files on top of the scaffolded web/ COPY web/sites/default/settings.php web/sites/default/settings.php COPY web/sites/default/files/ web/sites/default/files/ COPY web/modules/custom/ web/modules/custom/ RUN npm run build ARG FULLCALENDAR_VERSION=6.1.15 RUN curl -fsSL "https://cdn.jsdelivr.net/npm/fullcalendar@${FULLCALENDAR_VERSION}/index.global.min.js" \ -o web/modules/custom/riverside_pt/js/fullcalendar.min.js COPY config/sync/ config/sync/ # Debian nginx runs as www-data (matches php-fpm), config in conf.d/ RUN rm -f /etc/nginx/sites-enabled/default COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf.template COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY docker/php/entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh RUN chown -R www-data:www-data web/sites/default/files && \ chmod -R 755 web/sites/default/files && \ chmod 444 web/sites/default/settings.php EXPOSE 80 ENTRYPOINT ["/entrypoint.sh"]