# Laravel için PHP 8.2 resmi imajını kullanıyoruz
FROM php:8.2-fpm


# Çalışma dizinini belirleyelim
WORKDIR /var/www

# Gerekli bağımlılıkları yükleyelim
RUN apt-get update && apt-get install -y \
    git \
    unzip \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    cron \
    && service cron start && \
    docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd \
    && echo "* * * * * cd /var/www && php /var/www/artisan run-all-fetchs >> /dev/null 2>&1" >> /etc/cron.d/laravel-cron \
    && chmod 0644 /etc/cron.d/laravel-cron \
    && crontab /etc/cron.d/laravel-cron

# Composer'ı yükleyelim
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Laravel proje dosyalarını kopyalayalım
COPY . .


# Gerekli dizinleri oluşturma
RUN mkdir -p /var/www/storage/app/private/scribe

# Start of Selection
RUN set -x && \
    echo "Dosya izinleri ayarlanıyor..." && \
    chown -R www-data:www-data /var/www && \
    echo "chown komutu tamamlandı" && \
    find /var/www -type d -exec chmod 775 {} \; && \
    echo "Dizin izinleri ayarlandı" && \
    find /var/www -type f -exec chmod 664 {} \; && \
    echo "Dosya izinleri ayarlandı" && \
    chmod -R 775 /var/www/storage && \
    echo "Storage izinleri ayarlandı" && \
    chmod -R 775 /var/www/bootstrap/cache && \
    echo "Cache izinleri ayarlandı" && \
    chmod -R 775 /var/www/storage/framework/views && \
    echo "Views izinleri ayarlandı" && \
    chmod -R 775 /var/www/public && \
    echo "Public dizin izinleri ayarlandı"
# Laravel uygulamasını başlatma ve loglama

RUN set -x && \
 #   echo "Laravel kurulum komutları başlatılıyor..." && \
 #   php artisan migrate && \
 #   echo "Migrasyon tamamlandı" && \
    php artisan key:generate && \
    echo "Uygulama anahtarı oluşturuldu" && \
    php artisan config:cache && \
    echo "Konfigürasyon önbelleğe alındı" && \
    php artisan route:cache && \
    echo "Rotalar önbelleğe alındı" && \
    php artisan view:cache && \
    echo "Görünümler önbelleğe alındı" && \
    php artisan storage:link && \
    echo "Storage sembolik bağlantısı oluşturuldu" && \
    php artisan scribe:generate && \
    echo "API dokümantasyonu oluşturuldu" && \
    echo "Laravel uygulaması başarıyla başlatıldı.";


RUN service cron start && \
    echo "Cron başlatıldı"
