Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
102c108074
|
14
.gitignore
vendored
14
.gitignore
vendored
@@ -1,9 +1,11 @@
|
|||||||
/.idea
|
/.idea/
|
||||||
/.vscode
|
/.vscode/
|
||||||
downloaded/
|
/iptvc/
|
||||||
/svc-*
|
/web/
|
||||||
/tools
|
/playlists/
|
||||||
/tmp
|
/tools/
|
||||||
|
/.profile/
|
||||||
|
/tmp/
|
||||||
|
|
||||||
*.log
|
*.log
|
||||||
.env
|
.env
|
||||||
|
|||||||
13
README.md
13
README.md
@@ -19,24 +19,23 @@
|
|||||||
```
|
```
|
||||||
git clone https://git.axenov.dev/IPTV/docker.git iptv
|
git clone https://git.axenov.dev/IPTV/docker.git iptv
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
git clone https://git.axenov.dev/IPTV/svc-main.git
|
git clone https://git.axenov.dev/IPTV/web.git
|
||||||
cp svc-main/.env.example svc-main/.env
|
cp web/.env.example web/.env
|
||||||
docker exec -it iptv-php composer i
|
docker exec -it iptv-main composer i
|
||||||
docker compose up -d --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
### Описание переменных окружения
|
### Описание переменных окружения
|
||||||
|
|
||||||
* `IPTV_ENV` -- окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
|
* `IPTV_ENV` -- окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
|
||||||
* `REDIS_UID`, `REDIS_GID` -- ID поьзователя/группы для разрешения владельца файлов и директорий keydb;
|
* `REDIS_UID`, `REDIS_GID` -- ID пользователя/группы для разрешения владельца файлов и директорий keydb;
|
||||||
* `REDIS_PORT` -- порт keydb, который будет проброшен на хост.
|
* `REDIS_PORT` -- порт keydb, который будет проброшен на хост.
|
||||||
|
|
||||||
|
|
||||||
### Reverse-proxy
|
### Reverse-proxy
|
||||||
|
|
||||||
На сервере опционально можно настроить реверс-прокси до контейнера веб-сервиса, например, чтобы настроить доступ по доменному имени, изменить порт, подключить SSL-сертификаты или др.
|
На сервере опционально можно настроить реверс-прокси до контейнера веб-сервиса, например, чтобы настроить доступ по доменному имени, изменить порт, подключить SSL-сертификаты или др.
|
||||||
|
|
||||||
### Apache
|
#### Apache
|
||||||
|
|
||||||
Если на сервере, на котором запускаются контейнеры, стоит apache2, то, чтобы использовать его как реверс-прокси, нужно:
|
Если на сервере, на котором запускаются контейнеры, стоит apache2, то, чтобы использовать его как реверс-прокси, нужно:
|
||||||
|
|
||||||
@@ -85,7 +84,7 @@ $ # для подгрузки включенных модулей выполни
|
|||||||
$ sudo systemctl restart apache2
|
$ sudo systemctl restart apache2
|
||||||
```
|
```
|
||||||
|
|
||||||
### Nginx
|
#### Nginx
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo nano /etc/nginx/sites-available/iptv.conf
|
$ sudo nano /etc/nginx/sites-available/iptv.conf
|
||||||
|
|||||||
37
compose.yml
37
compose.yml
@@ -19,7 +19,8 @@ services:
|
|||||||
keydb:
|
keydb:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-keydb
|
container_name: iptv-keydb
|
||||||
image: eqalpha/keydb:latest
|
build:
|
||||||
|
dockerfile: docker/keydb/dockerfile
|
||||||
user: "${REDIS_UID}:${REDIS_GID}"
|
user: "${REDIS_UID}:${REDIS_GID}"
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker/keydb/keydb.conf:/etc/keydb/keydb.conf
|
- ./docker/keydb/keydb.conf:/etc/keydb/keydb.conf
|
||||||
@@ -28,32 +29,50 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "${REDIS_PORT:-6379}:6379"
|
- "${REDIS_PORT:-6379}:6379"
|
||||||
|
|
||||||
php:
|
php-main:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-php
|
container_name: iptv-main
|
||||||
environment:
|
environment:
|
||||||
- PHP_IDE_CONFIG=serverName=iptv.local
|
- PHP_IDE_CONFIG=serverName=iptv.local
|
||||||
build:
|
build:
|
||||||
dockerfile: docker/php/${IPTV_ENV}/dockerfile
|
dockerfile: docker/php/${IPTV_ENV}/dockerfile.main
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker/php/${IPTV_ENV}/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
|
- ./docker/php/${IPTV_ENV}/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
|
||||||
- ./docker/php/${IPTV_ENV}/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
|
- ./docker/php/${IPTV_ENV}/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
|
||||||
- ./log/php:/var/log/php:rw
|
- ./log/php:/var/log/php:rw
|
||||||
- ./svc-main:/var/www:rw
|
- ./web:/var/www:rw
|
||||||
|
depends_on:
|
||||||
|
- keydb
|
||||||
|
|
||||||
|
php-cron:
|
||||||
|
<<: *common-attributes
|
||||||
|
container_name: iptv-cron
|
||||||
|
environment:
|
||||||
|
- PHP_IDE_CONFIG=serverName=iptv.local
|
||||||
|
build:
|
||||||
|
dockerfile: docker/php/${IPTV_ENV}/dockerfile.cron
|
||||||
|
volumes:
|
||||||
|
- ./docker/php/${IPTV_ENV}/cron_entrypoint.sh:/entrypoint.sh
|
||||||
|
- ./docker/php/${IPTV_ENV}/cron_jobs:/etc/cron.d/iptv_jobs
|
||||||
|
- ./docker/php/${IPTV_ENV}/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
|
||||||
|
- ./docker/php/${IPTV_ENV}/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
|
||||||
|
- ./log/php:/var/log/php:rw
|
||||||
|
- ./web:/var/www:rw
|
||||||
depends_on:
|
depends_on:
|
||||||
- keydb
|
- keydb
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-nginx
|
container_name: iptv-nginx
|
||||||
image: nginx:latest
|
build:
|
||||||
|
dockerfile: docker/nginx/dockerfile
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf:ro
|
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
- ./log/nginx:/var/log/nginx:rw
|
- ./log/nginx:/var/log/nginx:rw
|
||||||
- ./svc-main:/var/www:ro
|
- ./web:/var/www:ro
|
||||||
ports:
|
ports:
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
links:
|
links:
|
||||||
- php
|
- php-main
|
||||||
depends_on:
|
depends_on:
|
||||||
- php
|
- php-main
|
||||||
|
|||||||
1
docker/keydb/dockerfile
Normal file
1
docker/keydb/dockerfile
Normal file
@@ -0,0 +1 @@
|
|||||||
|
FROM eqalpha/keydb:latest AS iptv-keydb
|
||||||
1
docker/nginx/dockerfile
Normal file
1
docker/nginx/dockerfile
Normal file
@@ -0,0 +1 @@
|
|||||||
|
FROM nginx:latest AS iptv-nginx
|
||||||
@@ -20,7 +20,7 @@ server {
|
|||||||
}
|
}
|
||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
try_files $uri /index.php =404;
|
try_files $uri /index.php =404;
|
||||||
fastcgi_pass php:9000;
|
fastcgi_pass php-main:9000;
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
fastcgi_index index.php;
|
fastcgi_index index.php;
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
|||||||
17
docker/php/dev/cron_entrypoint.sh
Executable file
17
docker/php/dev/cron_entrypoint.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo "Current pwd: $(pwd)"
|
||||||
|
for file in "/etc/cron.d/iptv_jobs" "/var/www/iptv-cli"; do
|
||||||
|
if [ ! -f "$file" ]; then echo "Not found: $file" && exit 1; fi
|
||||||
|
done;
|
||||||
|
|
||||||
|
echo "Importing crontab /etc/cron.d/iptv_jobs:"
|
||||||
|
echo "======================="
|
||||||
|
cat /etc/cron.d/iptv_jobs
|
||||||
|
echo "======================="
|
||||||
|
|
||||||
|
crontab -n /etc/cron.d/iptv_jobs || exit 2
|
||||||
|
|
||||||
|
echo "Running cron with /etc/cron.d/iptv_jobs"
|
||||||
|
crontab /etc/cron.d/iptv_jobs
|
||||||
|
touch /var/log/cron.log
|
||||||
|
cron -L 15 && tail -fn 1 /var/log/cron.log
|
||||||
5
docker/php/dev/cron_jobs
Normal file
5
docker/php/dev/cron_jobs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
SHELL=/bin/sh
|
||||||
|
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
PHP_IDE_CONFIG=serverName=iptv.local
|
||||||
|
|
||||||
|
* * * * * /var/www/iptv-cli check:ini --count 5 --order random
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
FROM php:8.3-fpm
|
|
||||||
|
|
||||||
RUN apt update && \
|
|
||||||
apt upgrade -y && \
|
|
||||||
apt install -y git unzip 7zip
|
|
||||||
|
|
||||||
# https://pecl.php.net/package/xdebug
|
|
||||||
# https://pecl.php.net/package/redis
|
|
||||||
RUN pecl channel-update pecl.php.net && \
|
|
||||||
pecl install xdebug-3.4.1 redis && \
|
|
||||||
docker-php-ext-enable redis && \
|
|
||||||
mkdir -p /var/run/php && \
|
|
||||||
mkdir -p /var/log/php && \
|
|
||||||
chmod -R 777 /var/log/php
|
|
||||||
|
|
||||||
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
|
|
||||||
|
|
||||||
EXPOSE 9000
|
|
||||||
WORKDIR /var/www
|
|
||||||
CMD composer install
|
|
||||||
ENTRYPOINT php-fpm
|
|
||||||
44
docker/php/dev/dockerfile.cron
Normal file
44
docker/php/dev/dockerfile.cron
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
FROM php:8.4-fpm AS iptv-img-base
|
||||||
|
|
||||||
|
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/xdebug
|
||||||
|
# https://pecl.php.net/package/redis
|
||||||
|
RUN pecl channel-update pecl.php.net && \
|
||||||
|
pecl install \
|
||||||
|
xdebug-3.4.1 \
|
||||||
|
redis-6.1.0
|
||||||
|
|
||||||
|
RUN docker-php-ext-enable redis && \
|
||||||
|
docker-php-ext-configure gd --with-jpeg && \
|
||||||
|
docker-php-ext-install gd && \
|
||||||
|
docker-php-ext-configure pcntl --enable-pcntl && \
|
||||||
|
docker-php-ext-install pcntl
|
||||||
|
|
||||||
|
RUN mkdir -p /var/run/php && \
|
||||||
|
mkdir -p /var/log/php && \
|
||||||
|
chmod -R 777 /var/log/php
|
||||||
|
|
||||||
|
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
|
||||||
|
|
||||||
|
RUN git config --global --add safe.directory /var/www
|
||||||
|
|
||||||
|
EXPOSE 9000
|
||||||
|
WORKDIR /var/www
|
||||||
|
CMD ["composer", "install"]
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
|
||||||
|
FROM iptv-img-base AS iptv-img-cron
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
44
docker/php/dev/dockerfile.main
Normal file
44
docker/php/dev/dockerfile.main
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
FROM php:8.4-fpm AS iptv-img-base
|
||||||
|
|
||||||
|
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/xdebug
|
||||||
|
# https://pecl.php.net/package/redis
|
||||||
|
RUN pecl channel-update pecl.php.net && \
|
||||||
|
pecl install \
|
||||||
|
xdebug-3.4.1 \
|
||||||
|
redis-6.1.0
|
||||||
|
|
||||||
|
RUN docker-php-ext-enable xdebug redis && \
|
||||||
|
docker-php-ext-configure gd --with-jpeg && \
|
||||||
|
docker-php-ext-install gd && \
|
||||||
|
docker-php-ext-configure pcntl --enable-pcntl && \
|
||||||
|
docker-php-ext-install pcntl
|
||||||
|
|
||||||
|
RUN mkdir -p /var/run/php && \
|
||||||
|
mkdir -p /var/log/php && \
|
||||||
|
chmod -R 777 /var/log/php
|
||||||
|
|
||||||
|
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
|
||||||
|
|
||||||
|
RUN git config --global --add safe.directory /var/www
|
||||||
|
|
||||||
|
EXPOSE 9000
|
||||||
|
WORKDIR /var/www
|
||||||
|
CMD ["composer", "install"]
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
|
||||||
|
FROM iptv-img-base AS iptv-img-main
|
||||||
|
|
||||||
|
ENTRYPOINT ["php-fpm", "--nodaemonize"]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
[PHP]
|
[PHP]
|
||||||
error_reporting = E_ALL
|
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
|
||||||
expose_php = Off
|
expose_php = Off
|
||||||
file_uploads = Off
|
file_uploads = Off
|
||||||
max_execution_time=-1
|
max_execution_time=-1
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ pm.max_requests = 50
|
|||||||
pm.status_path = /status
|
pm.status_path = /status
|
||||||
ping.path = /ping
|
ping.path = /ping
|
||||||
ping.response = pong
|
ping.response = pong
|
||||||
access.log = /var/log/php/$pool.access.log
|
access.log = /var/www/$pool.access.log
|
||||||
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"
|
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"
|
||||||
; chroot = /var/www
|
; chroot = /var/www
|
||||||
; chdir = /var/www
|
; chdir = /var/www
|
||||||
php_flag[display_errors] = on
|
php_flag[display_errors] = on
|
||||||
php_admin_value[error_log] = /var/log/php/$pool.error.log
|
php_admin_value[error_log] = /var/www/$pool.error.log
|
||||||
php_admin_flag[log_errors] = on
|
php_admin_flag[log_errors] = on
|
||||||
php_admin_value[memory_limit] = 512M
|
php_admin_value[memory_limit] = 512M
|
||||||
|
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_DEPRECATED
|
||||||
|
|||||||
Reference in New Issue
Block a user