# ========================================================= # APPLICATION STAGE # Laravel + PHP 7.4 + OCI8 + Nginx # ========================================================= FROM 10.15.39.186:8083/php74-fpm-oci8-lengkap:1.0 # ========================================================= # Proxy # ========================================================= ARG http_proxy ARG https_proxy ENV http_proxy=${http_proxy} ENV https_proxy=${https_proxy} ENV HTTP_PROXY=${http_proxy} ENV HTTPS_PROXY=${https_proxy} # ========================================================= # System dependencies # ========================================================= RUN apt-get update && apt-get install -y \ nginx \ vim \ wget \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ libzip-dev \ libaio1 \ libaio-dev \ unzip \ && docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ && docker-php-ext-install \ gd \ pdo \ pdo_mysql \ zip \ && rm -rf /var/lib/apt/lists/* # ========================================================= # PEAR Proxy # ========================================================= RUN pear config-set http_proxy "http://10.15.3.20:80" # ========================================================= # Composer # ========================================================= WORKDIR /var/www # ========================================================= # Composer dependency # Copy hanya composer files terlebih dahulu agar Docker cache # ========================================================= COPY composer.json composer.lock ./ COPY --chown=www-data:www-data . . RUN composer install \ --no-dev \ --prefer-dist \ --no-interaction \ --no-scripts \ --optimize-autoloader # ========================================================= # Laravel directories & permission # ========================================================= RUN mkdir -p \ /var/www/storage/framework/sessions \ /var/www/storage/framework/views \ /var/www/storage/framework/cache \ /var/www/storage/logs \ /var/www/bootstrap/cache \ && touch /var/www/storage/logs/laravel.log \ && chown -R www-data:www-data /var/www \ && chmod -R 775 /var/www/storage \ && chmod -R 775 /var/www/bootstrap/cache # ========================================================= # Laravel cache # ========================================================= RUN php artisan config:clear || true \ && php artisan cache:clear || true \ && php artisan view:clear || true # ========================================================= # Nginx configuration # ========================================================= RUN rm -f /etc/nginx/sites-enabled/default \ && rm -f /etc/nginx/sites-available/default RUN printf '%s\n' \ 'server {' \ ' listen 80;' \ ' server_name _;' \ '' \ ' root /var/www/public;' \ ' index index.php index.html;' \ '' \ ' access_log /var/log/nginx/access.log;' \ ' error_log /var/log/nginx/error.log;' \ '' \ ' location / {' \ ' try_files $uri $uri/ /index.php?$query_string;' \ ' }' \ '' \ ' location ~ \.php$ {' \ ' try_files $uri =404;' \ ' include fastcgi_params;' \ ' fastcgi_pass 127.0.0.1:9000;' \ ' fastcgi_index index.php;' \ ' fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' \ ' fastcgi_param PATH_INFO $fastcgi_path_info;' \ ' }' \ '' \ ' location ~ /\.ht {' \ ' deny all;' \ ' }' \ '}' \ > /etc/nginx/sites-available/default RUN ln -sf /etc/nginx/sites-available/default \ /etc/nginx/sites-enabled/default # ========================================================= # Remove proxy from runtime # ========================================================= ENV http_proxy="" ENV https_proxy="" ENV HTTP_PROXY="" ENV HTTPS_PROXY="" # ========================================================= # Port # ========================================================= EXPOSE 80 # ========================================================= # Start PHP-FPM + Nginx # ========================================================= CMD ["sh", "-c", "php-fpm -D && exec nginx -g 'daemon off;'"]