FROM php:8.5-apache # Install PHP extensions + system tools # - pdo_sqlite / zip: required by the app and Composer # - freetds / unixodbc / tdsodbc: SQL Server access via ODBC for PrintStream import # - cron: runs the PrintStream background import on a schedule RUN apt-get update \ && apt-get install -y \ libsqlite3-dev \ libzip-dev \ unzip \ freetds-dev \ freetds-bin \ unixodbc-dev \ tdsodbc \ cron \ && rm -rf /var/lib/apt/lists/* \ && docker-php-ext-install pdo_sqlite zip \ && docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \ && docker-php-ext-install pdo_odbc \ && a2enmod rewrite # Install Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Configure Apache virtual host COPY docker/vhost.conf /etc/apache2/sites-available/000-default.conf COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh WORKDIR /var/www/html # Copy application files COPY . . # Generate autoloader (no external dependencies — just generates vendor/autoload.php) RUN composer install --no-dev --optimize-autoloader --no-interaction # Install crontab for background PrintStream import COPY docker/crontab /etc/cron.d/kanban-import RUN chmod 0644 /etc/cron.d/kanban-import # Create writable directories and set correct permissions RUN mkdir -p database storage \ && chown -R www-data:www-data /var/www/html \ && chmod 775 database storage EXPOSE 80 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]