FROM php:8.4-fpm

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip \
    nginx \
    libpq-dev

# Clear package cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd pdo_pgsql pgsql

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Set working directory
WORKDIR /var/www/html

# Copy existing application directory contents
COPY . /var/www/html

# Copy nginx config
COPY nginx.conf /etc/nginx/sites-available/default

# Create .env file from environment variables
RUN echo "APP_ENV=production" > /var/www/html/.env && \
    echo "APP_DEBUG=false" >> /var/www/html/.env && \
    echo "APP_KEY=base64:ydd+4dChuLcwlckuHyYNSbbfEtk0tFmvVm0Jktz2eHU=" >> /var/www/html/.env && \
    echo "APP_URL=https://exchange-app-9t8n.onrender.com" >> /var/www/html/.env && \
    echo "DB_CONNECTION=pgsql" >> /var/www/html/.env && \
    echo "DB_HOST=\${DB_HOST}" >> /var/www/html/.env && \
    echo "DB_PORT=\${DB_PORT}" >> /var/www/html/.env && \
    echo "DB_DATABASE=\${DB_DATABASE}" >> /var/www/html/.env && \
    echo "DB_USERNAME=\${DB_USERNAME}" >> /var/www/html/.env && \
    echo "DB_PASSWORD=\${DB_PASSWORD}" >> /var/www/html/.env && \
    echo "L5_SWAGGER_CONST_HOST=https://exchange-app-9t8n.onrender.com/api/v1" >> /var/www/html/.env

# Install dependencies
RUN composer update --no-dev --optimize-autoloader

# Clear cached documentation
RUN rm -rf /var/www/html/storage/api-docs/*

# Set permissions
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 755 /var/www/html/storage

# Expose port
EXPOSE 80

# Start nginx and php-fpm
CMD sh -c "php artisan migrate --force && php artisan l5-swagger:generate && php-fpm & nginx -g 'daemon off;'"
