diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ec9b72b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +/docker +/.git +/.idea +/.vscode +.phpunit.result.cache +.php-cs-fixer.cache + +*.cache +*.log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1daa260 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,48 @@ +FROM php:8.4-fpm AS iptv-php-base +LABEL org.opencontainers.image.authors="Anthony Axenov " + +RUN apt update && \ + apt upgrade -y && \ + apt install -y \ + git \ + unzip \ + 7zip \ + cron \ + zlib1g-dev \ + imagemagick \ + libpng-dev \ + libjpeg-dev + +# https://pecl.php.net/package/redis +RUN pecl channel-update pecl.php.net && \ + pecl install redis-6.1.0 + +RUN docker-php-ext-enable redis && \ + docker-php-ext-configure gd --with-jpeg && \ + docker-php-ext-install gd + +RUN mkdir -p /var/run/php && \ + mkdir -p /var/log/php && \ + chmod -R 777 /var/log/php + +COPY ./ /var/www +COPY --from=composer /usr/bin/composer /usr/local/bin/composer + +RUN git config --global --add safe.directory /var/www + +EXPOSE 9000 +WORKDIR /var/www +ENTRYPOINT [ "php-fpm", "--nodaemonize" ] + +FROM iptv-php-base AS iptv-web-dev +LABEL org.opencontainers.image.authors="Anthony Axenov " + +# https://pecl.php.net/package/xdebug +RUN pecl install xdebug-3.4.1 + +RUN composer install + +FROM iptv-php-base AS iptv-web-prod +LABEL org.opencontainers.image.authors="Anthony Axenov " + +RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader diff --git a/docker/dev/php.ini b/docker/dev/php.ini new file mode 100644 index 0000000..c6aa22c --- /dev/null +++ b/docker/dev/php.ini @@ -0,0 +1,26 @@ +[PHP] +error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED +expose_php = Off +file_uploads = Off +max_execution_time=-1 +memory_limit = 512M + +[opcache] +opcache.enable = 1 +opcache.enable_cli = 1 +opcache.memory_consumption = 128 +opcache.max_accelerated_files = 30000 +opcache.revalidate_freq = 0 +opcache.jit_buffer_size = 64M +opcache.jit = tracing + +[xdebug] +; https://xdebug.org/docs/all_settings +zend_extension = xdebug.so +xdebug.mode = debug +xdebug.start_with_request = yes +xdebug.trigger_value = go +xdebug.client_host = host.docker.internal +xdebug.REQUEST = * +xdebug.SESSION = * +xdebug.SERVER = * diff --git a/docker/dev/www.conf b/docker/dev/www.conf new file mode 100644 index 0000000..3a6023d --- /dev/null +++ b/docker/dev/www.conf @@ -0,0 +1,22 @@ +[www] +user = www-data +group = www-data +listen = 127.0.0.1:9000 +pm = dynamic +pm.max_children = 5 +pm.start_servers = 2 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 +pm.max_requests = 50 +pm.status_path = /status +ping.path = /ping +ping.response = pong +access.log = /var/log/php/$pool.access.log +;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%" +; chroot = /var/www +; chdir = /var/www +php_flag[display_errors] = on +php_admin_value[error_log] = /var/log/php/$pool.error.log +php_admin_flag[log_errors] = on +php_admin_value[memory_limit] = 512M +php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_DEPRECATED diff --git a/docker/prod/php.ini b/docker/prod/php.ini new file mode 100644 index 0000000..a434a6b --- /dev/null +++ b/docker/prod/php.ini @@ -0,0 +1,16 @@ +[PHP] +error_reporting = E_ALL & ~E_DEPRECATED +expose_php = Off +file_uploads = Off +memory_limit = 512M +; upload_max_filesize=10M +; post_max_size=10M + +[opcache] +opcache.enable = 1 +opcache.enable_cli = 1 +opcache.memory_consumption = 128 +opcache.max_accelerated_files = 30000 +opcache.revalidate_freq = 0 +opcache.jit_buffer_size = 64M +opcache.jit = tracing diff --git a/docker/prod/www.conf b/docker/prod/www.conf new file mode 100644 index 0000000..3a6023d --- /dev/null +++ b/docker/prod/www.conf @@ -0,0 +1,22 @@ +[www] +user = www-data +group = www-data +listen = 127.0.0.1:9000 +pm = dynamic +pm.max_children = 5 +pm.start_servers = 2 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 +pm.max_requests = 50 +pm.status_path = /status +ping.path = /ping +ping.response = pong +access.log = /var/log/php/$pool.access.log +;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%" +; chroot = /var/www +; chdir = /var/www +php_flag[display_errors] = on +php_admin_value[error_log] = /var/log/php/$pool.error.log +php_admin_flag[log_errors] = on +php_admin_value[memory_limit] = 512M +php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_DEPRECATED