c7b06c0cba
- Added NTP package installation to synchronize time within the container. - Configured a cron job for automatic time updates, improving time accuracy for scheduled tasks. - Updated file permission settings and added echo statements for better logging and clarity during setup. These changes enhance the Docker environment by ensuring accurate timekeeping, which is crucial for scheduled tasks in the Laravel application.
86 lines
2.8 KiB
Docker
86 lines
2.8 KiB
Docker
# Laravel için PHP 8.2 resmi imajını kullanıyoruz
|
||
FROM php:8.2-fpm
|
||
|
||
ENV TZ=Europe/Istanbul
|
||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||
|
||
|
||
# Ç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 \
|
||
ntp \
|
||
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd \
|
||
&& echo "* * * * * cd /var/www && php artisan schedule:run >> /dev/null 2>&1" >> /etc/cron.d/laravel-cron \
|
||
&& chmod 0644 /etc/cron.d/laravel-cron \
|
||
&& crontab /etc/cron.d/laravel-cron \
|
||
&& service cron start
|
||
|
||
# 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ı" && \
|
||
echo "0 0 * * * root /usr/sbin/ntpdate -u pool.ntp.org" >> /etc/crontab && \
|
||
echo "Otomatik saat güncelleme 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ı."
|
||
|
||
|
||
# Apache veya Nginx kullanılacaksa, burada ayarları yapabiliriz (Opsiyonel)
|
||
|
||
# Container başlangıcında çalışacak script
|
||
COPY docker-entrypoint.sh /usr/local/bin/
|
||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||
|
||
RUN composer install --no-dev --optimize-autoloader
|
||
|
||
ENTRYPOINT ["docker-entrypoint.sh"]
|