WIP
This commit is contained in:
14
.gitignore
vendored
14
.gitignore
vendored
@@ -1,9 +1,11 @@
|
||||
/.idea
|
||||
/.vscode
|
||||
downloaded/
|
||||
/svc-*
|
||||
/tools
|
||||
/tmp
|
||||
/.idea/
|
||||
/.vscode/
|
||||
/iptvc/
|
||||
/web/
|
||||
/playlists/
|
||||
/tools/
|
||||
/.profile/
|
||||
/tmp/
|
||||
|
||||
*.log
|
||||
.env
|
||||
|
||||
13
README.md
13
README.md
@@ -19,24 +19,23 @@
|
||||
```
|
||||
git clone https://git.axenov.dev/IPTV/docker.git iptv
|
||||
cp .env.example .env
|
||||
git clone https://git.axenov.dev/IPTV/svc-main.git
|
||||
cp svc-main/.env.example svc-main/.env
|
||||
docker exec -it iptv-php composer i
|
||||
git clone https://git.axenov.dev/IPTV/web.git
|
||||
cp web/.env.example web/.env
|
||||
docker exec -it iptv-main composer i
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
### Описание переменных окружения
|
||||
|
||||
* `IPTV_ENV` -- окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
|
||||
* `REDIS_UID`, `REDIS_GID` -- ID поьзователя/группы для разрешения владельца файлов и директорий keydb;
|
||||
* `REDIS_UID`, `REDIS_GID` -- ID пользователя/группы для разрешения владельца файлов и директорий keydb;
|
||||
* `REDIS_PORT` -- порт keydb, который будет проброшен на хост.
|
||||
|
||||
|
||||
### Reverse-proxy
|
||||
|
||||
На сервере опционально можно настроить реверс-прокси до контейнера веб-сервиса, например, чтобы настроить доступ по доменному имени, изменить порт, подключить SSL-сертификаты или др.
|
||||
|
||||
### Apache
|
||||
#### Apache
|
||||
|
||||
Если на сервере, на котором запускаются контейнеры, стоит apache2, то, чтобы использовать его как реверс-прокси, нужно:
|
||||
|
||||
@@ -85,7 +84,7 @@ $ # для подгрузки включенных модулей выполни
|
||||
$ sudo systemctl restart apache2
|
||||
```
|
||||
|
||||
### Nginx
|
||||
#### Nginx
|
||||
|
||||
```
|
||||
$ sudo nano /etc/nginx/sites-available/iptv.conf
|
||||
|
||||
37
compose.yml
37
compose.yml
@@ -19,7 +19,8 @@ services:
|
||||
keydb:
|
||||
<<: *common-attributes
|
||||
container_name: iptv-keydb
|
||||
image: eqalpha/keydb:latest
|
||||
build:
|
||||
dockerfile: docker/keydb/dockerfile
|
||||
user: "${REDIS_UID}:${REDIS_GID}"
|
||||
volumes:
|
||||
- ./docker/keydb/keydb.conf:/etc/keydb/keydb.conf
|
||||
@@ -28,32 +29,50 @@ services:
|
||||
ports:
|
||||
- "${REDIS_PORT:-6379}:6379"
|
||||
|
||||
php:
|
||||
php-main:
|
||||
<<: *common-attributes
|
||||
container_name: iptv-php
|
||||
container_name: iptv-main
|
||||
environment:
|
||||
- PHP_IDE_CONFIG=serverName=iptv.local
|
||||
build:
|
||||
dockerfile: docker/php/${IPTV_ENV}/dockerfile
|
||||
dockerfile: docker/php/${IPTV_ENV}/dockerfile.main
|
||||
volumes:
|
||||
- ./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
|
||||
- ./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:
|
||||
- keydb
|
||||
|
||||
nginx:
|
||||
<<: *common-attributes
|
||||
container_name: iptv-nginx
|
||||
image: nginx:latest
|
||||
build:
|
||||
dockerfile: docker/nginx/dockerfile
|
||||
volumes:
|
||||
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
- ./log/nginx:/var/log/nginx:rw
|
||||
- ./svc-main:/var/www:ro
|
||||
- ./web:/var/www:ro
|
||||
ports:
|
||||
- "8080:80"
|
||||
links:
|
||||
- php
|
||||
- php-main
|
||||
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$ {
|
||||
try_files $uri /index.php =404;
|
||||
fastcgi_pass php:9000;
|
||||
fastcgi_pass php-main:9000;
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_index index.php;
|
||||
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]
|
||||
error_reporting = E_ALL
|
||||
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
|
||||
expose_php = Off
|
||||
file_uploads = Off
|
||||
max_execution_time=-1
|
||||
|
||||
@@ -11,11 +11,12 @@ pm.max_requests = 50
|
||||
pm.status_path = /status
|
||||
ping.path = /ping
|
||||
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%%"
|
||||
; chroot = /var/www
|
||||
; chdir = /var/www
|
||||
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_value[memory_limit] = 512M
|
||||
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_DEPRECATED
|
||||
|
||||
Reference in New Issue
Block a user