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"]
