Перевод checker и docs на контейнеры
This commit is contained in:
28
README.md
28
README.md
@@ -1,13 +1,13 @@
|
|||||||
# Инфраструктурный слой проекта iptv.axenov.dev
|
# Инфраструктурный слой проекта m3u.su
|
||||||
|
|
||||||
Docker-окружение для работы проекта iptv.axenov.dev.
|
Docker-окружение для работы проекта m3u.su.
|
||||||
|
|
||||||
> **Веб-сайт:** [iptv.axenov.dev](https://iptv.axenov.dev)
|
> **Веб-сайт:** [m3u.su](https://m3u.su)
|
||||||
> **Зеркало:** [m3u.su](https://m3u.su)
|
> **Документация:** [m3u.su/docs](https://m3u.su/docs)
|
||||||
> Исходный код: [git.axenov.dev/IPTV](https://git.axenov.dev/IPTV)
|
> Исходный код: [git.axenov.dev/IPTV](https://git.axenov.dev/IPTV)
|
||||||
> Telegram-канал: [@iptv_aggregator](https://t.me/iptv_aggregator)
|
> Telegram-канал: [@iptv_aggregator](https://t.me/iptv_aggregator)
|
||||||
> Обсуждение: [@iptv_aggregator_chat](https://t.me/iptv_aggregator_chat)
|
> Обсуждение: [@iptv_aggregator_chat](https://t.me/iptv_aggregator_chat)
|
||||||
> Дополнительные сведения: [git.axenov.dev/IPTV/.profile](https://git.axenov.dev/IPTV/.profile)
|
> Бот: [@iptv_aggregator_bot](https://t.me/iptv_aggregator_bot)
|
||||||
|
|
||||||
## Использованный стек
|
## Использованный стек
|
||||||
|
|
||||||
@@ -38,15 +38,15 @@ wget -O - https://git.axenov.dev/IPTV/iptv-docker/raw/branch/master/iptv | bash
|
|||||||
|
|
||||||
## Описание переменных окружения
|
## Описание переменных окружения
|
||||||
|
|
||||||
* `IPTV_ENV` -- окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
|
* `IPTV_ENV` — окружение для развёртывания: это имена директорий и/или префиксы имён конфигов, которые будут проброшены в контейнеры;
|
||||||
* `KEYDB_UID`, `KEYDB_GID` -- ID пользователя/группы для разрешения владельца файлов и директорий keydb;
|
* `KEYDB_UID`, `KEYDB_GID` — ID пользователя/группы для разрешения владельца файлов и директорий keydb;
|
||||||
* `KEYDB_PORT` -- порт keydb, который будет проброшен на хост.
|
* `KEYDB_PORT` — порт keydb, который будет проброшен на хост.
|
||||||
* `KEYDB_USERNAME`, `KEYDB_PASSWORD` -- реквизиты доступа к keydb;
|
* `KEYDB_USERNAME`, `KEYDB_PASSWORD` — реквизиты доступа к keydb;
|
||||||
* `CHECKER_DB` -- БД keydb для хранения кеша проверенных плейлистов;
|
* `CHECKER_DB` — БД keydb для хранения кеша проверенных плейлистов;
|
||||||
* `CHECKER_TTL` -- время жизни кеша проверенных плейлистов;
|
* `CHECKER_TTL` — время жизни кеша проверенных плейлистов;
|
||||||
* `CHECKER_WAIT` -- кол-во секунд между запусками iptvc;
|
* `CHECKER_WAIT` — кол-во секунд между запусками iptvc;
|
||||||
* `CHECKER_INIFILE` -- путь к файлу списка плейлистов внутри контейнера;
|
* `CHECKER_INIFILE` — путь к файлу списка плейлистов внутри контейнера;
|
||||||
* `CHECKER_TAGFILE` -- путь к файлу списка тегов внутри контейнера.
|
* `CHECKER_TAGFILE` — путь к файлу списка тегов внутри контейнера.
|
||||||
|
|
||||||
## Reverse-proxy
|
## Reverse-proxy
|
||||||
|
|
||||||
|
|||||||
64
compose.yml
64
compose.yml
@@ -1,5 +1,7 @@
|
|||||||
|
name: m3u-su
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
iptv:
|
m3u-su-network:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|
||||||
x-common-attributes: &common-attributes
|
x-common-attributes: &common-attributes
|
||||||
@@ -12,14 +14,28 @@ x-common-attributes: &common-attributes
|
|||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
- /etc/timezone:/etc/timezone:ro
|
||||||
networks:
|
networks:
|
||||||
- iptv
|
- m3u-su-network
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
nginx:
|
||||||
|
<<: *common-attributes
|
||||||
|
container_name: m3u-su-nginx
|
||||||
|
image: nginx:latest
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
|
- ./log/nginx:/var/log/nginx:rw
|
||||||
|
- ./web:/var/www:ro
|
||||||
|
ports:
|
||||||
|
- 8080:80
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
|
||||||
keydb:
|
keydb:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-keydb
|
container_name: m3u-su-keydb
|
||||||
image: eqalpha/keydb:latest
|
image: eqalpha/keydb:latest
|
||||||
|
pull_policy: always
|
||||||
user: ${KEYDB_UID}:${KEYDB_GID}
|
user: ${KEYDB_UID}:${KEYDB_GID}
|
||||||
entrypoint: ["sh", "/entrypoint.sh"]
|
entrypoint: ["sh", "/entrypoint.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -31,11 +47,12 @@ services:
|
|||||||
|
|
||||||
web:
|
web:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-web
|
container_name: m3u-su-web
|
||||||
build:
|
build:
|
||||||
|
context: .
|
||||||
dockerfile: dockerfile.web.${IPTV_ENV}
|
dockerfile: dockerfile.web.${IPTV_ENV}
|
||||||
environment:
|
environment:
|
||||||
- PHP_IDE_CONFIG=serverName=iptv.local
|
- PHP_IDE_CONFIG=serverName=m3u-su.local
|
||||||
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
|
||||||
@@ -47,41 +64,26 @@ services:
|
|||||||
|
|
||||||
checker:
|
checker:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-checker
|
container_name: m3u-su-checker
|
||||||
build:
|
image: git.axenov.dev/iptv/iptvc:latest
|
||||||
dockerfile: ./dockerfile.checker
|
pull_policy: always
|
||||||
|
command: ["check", "--repeat", "0", "--every", "${CHECKER_WAIT:-60}"]
|
||||||
environment:
|
environment:
|
||||||
- CACHE_ENABLED=true
|
- CACHE_ENABLED=true
|
||||||
# - CACHE_HOST=localhost
|
- CACHE_HOST=m3u-su-keydb
|
||||||
- CACHE_HOST=iptv-keydb
|
|
||||||
- CACHE_PORT=${KEYDB_PORT:-6379}
|
- CACHE_PORT=${KEYDB_PORT:-6379}
|
||||||
- CACHE_USERNAME=${KEYDB_USERNAME}
|
- CACHE_USERNAME=${KEYDB_USERNAME}
|
||||||
- CACHE_PASSWORD=${KEYDB_PASSWORD}
|
- CACHE_PASSWORD=${KEYDB_PASSWORD}
|
||||||
- CACHE_DB=${CHECKER_DB:-0}
|
- CACHE_DB=${CHECKER_DB:-0}
|
||||||
- CACHE_TTL=${CHECKER_TTL:-1800}
|
- CACHE_TTL=${CHECKER_TTL:-1800}
|
||||||
- CHECKER_WAIT=${CHECKER_WAIT:-60}
|
|
||||||
- CHECKER_INIFILE=${CHECKER_INIFILE:-/app/playlists.ini}
|
|
||||||
- CHECKER_TAGFILE=${CHECKER_TAGFILE:-/app/channels.json}
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./docker/checker/entrypoint.sh:/entrypoint.sh
|
- ./playlists/playlists.ini:/app/playlists.ini
|
||||||
- ./iptvc/:/app/
|
- ./playlists/channels.json:/app/channels.json
|
||||||
- ./playlists/playlists.ini:${CHECKER_INIFILE:-/app/playlists.ini}
|
|
||||||
- ./playlists/channels.json:${CHECKER_TAGFILE:-/app/channels.json}
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- keydb
|
- keydb
|
||||||
|
|
||||||
nginx:
|
docs:
|
||||||
<<: *common-attributes
|
<<: *common-attributes
|
||||||
container_name: iptv-nginx
|
container_name: m3u-su-docs
|
||||||
image: nginx:latest
|
image: git.axenov.dev/iptv/m3u-su-docs:latest
|
||||||
volumes:
|
pull_policy: always
|
||||||
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf:ro
|
|
||||||
- ./log/nginx:/var/log/nginx:rw
|
|
||||||
- ./web:/var/www:ro
|
|
||||||
- ./docs/site:/usr/share/nginx/html/doc-files:ro
|
|
||||||
ports:
|
|
||||||
- 8080:80
|
|
||||||
links:
|
|
||||||
- web
|
|
||||||
depends_on:
|
|
||||||
- web
|
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "CHECKER_WAIT=$CHECKER_WAIT"
|
|
||||||
echo "CHECKER_INIFILE=$CHECKER_INIFILE"
|
|
||||||
echo "CHECKER_TAGFILE=$CHECKER_TAGFILE"
|
|
||||||
binary="$PWD/bin/iptvc"
|
|
||||||
|
|
||||||
if [ ! -f "$binary" ]; then
|
|
||||||
echo "Downloading latest iptvc..."
|
|
||||||
wget https://git.axenov.dev/IPTV/iptvc/releases/download/latest/linux_amd64.zip
|
|
||||||
[ ! -d "$PWD/bin" ] && mkdir "$PWD/bin"
|
|
||||||
unzip -o linux_amd64.zip -d "$PWD/bin"
|
|
||||||
rm -rf linux_amd64.zip
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$binary" ]; then
|
|
||||||
echo "Not found: $binary"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
$binary version
|
|
||||||
|
|
||||||
args="check -i $CHECKER_INIFILE -t $CHECKER_TAGFILE"
|
|
||||||
while true; do
|
|
||||||
echo
|
|
||||||
echo "Running: $binary $args"
|
|
||||||
$binary $args
|
|
||||||
echo "Waiting $CHECKER_WAIT seconds"
|
|
||||||
sleep $CHECKER_WAIT
|
|
||||||
done
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
server {
|
server {
|
||||||
server_name iptv.local;
|
server_name m3u-su.local;
|
||||||
listen 80;
|
listen 80;
|
||||||
index index.html index.php;
|
index index.html index.php;
|
||||||
# access_log /var/log/nginx/access.log;
|
# access_log /var/log/nginx/access.log;
|
||||||
@@ -22,14 +22,14 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location ^~ /docs/ {
|
location ^~ /docs/ {
|
||||||
alias /usr/share/nginx/html/doc-files/;
|
proxy_pass http://docs:80/;
|
||||||
index index.html;
|
proxy_set_header Host $host;
|
||||||
# access_log /var/log/nginx/docs_access.log;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
error_log /var/log/nginx/docs_error.log warn;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
location ~* \.(?:js|css|png|jpg|jpeg|gif|ico|svg)$ {
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
expires 1y;
|
proxy_read_timeout 300;
|
||||||
add_header Cache-Control "public";
|
proxy_connect_timeout 300;
|
||||||
}
|
proxy_send_timeout 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
@@ -48,6 +48,8 @@ server {
|
|||||||
fastcgi_hide_header X-Powered-By;
|
fastcgi_hide_header X-Powered-By;
|
||||||
fastcgi_read_timeout 300;
|
fastcgi_read_timeout 300;
|
||||||
proxy_read_timeout 300;
|
proxy_read_timeout 300;
|
||||||
|
proxy_connect_timeout 300;
|
||||||
|
proxy_send_timeout 300;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
location ~* \.(jpg|jpeg|gif|css|png|ttf|woff|svg|js|ico)$ {
|
location ~* \.(jpg|jpeg|gif|css|png|ttf|woff|svg|js|ico)$ {
|
||||||
access_log off;
|
access_log off;
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
FROM alpine:3.21 AS iptvc-compiler
|
|
||||||
|
|
||||||
RUN apk --no-cache add \
|
|
||||||
bash \
|
|
||||||
tzdata \
|
|
||||||
go \
|
|
||||||
make \
|
|
||||||
libc6-compat
|
|
||||||
|
|
||||||
RUN mkdir /app && \
|
|
||||||
chmod 777 /app
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
||||||
Reference in New Issue
Block a user