1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 01:39:24 +02:00
Oinktube/docker-compose.yml
2024-05-29 12:50:55 -03:00

228 lines
6.7 KiB
YAML

version: '3.9'
services:
avideo:
build:
context: .
args:
SOCKET_PORT: ${SOCKET_PORT}
HTTP_PORT: ${HTTP_PORT}
HTTPS_PORT: ${HTTPS_PORT}
DB_MYSQL_HOST: ${DB_MYSQL_HOST}
DB_MYSQL_PORT: ${DB_MYSQL_PORT}
DB_MYSQL_NAME: ${DB_MYSQL_NAME}
DB_MYSQL_USER: ${DB_MYSQL_USER}
DB_MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD}
SERVER_NAME: ${SERVER_NAME}
ENABLE_PHPMYADMIN: ${ENABLE_PHPMYADMIN}
PHPMYADMIN_PORT: ${PHPMYADMIN_PORT}
PHPMYADMIN_ENCODER_PORT: ${PHPMYADMIN_ENCODER_PORT}
CREATE_TLS_CERTIFICATE: ${CREATE_TLS_CERTIFICATE}
TLS_CERTIFICATE_FILE: ${TLS_CERTIFICATE_FILE}
TLS_CERTIFICATE_KEY: ${TLS_CERTIFICATE_KEY}
CONTACT_EMAIL: ${CONTACT_EMAIL}
SYSTEM_ADMIN_PASSWORD: ${SYSTEM_ADMIN_PASSWORD}
WEBSITE_TITLE: ${WEBSITE_TITLE}
MAIN_LANGUAGE: ${MAIN_LANGUAGE}
restart: "unless-stopped"
environment:
SOCKET_PORT: ${SOCKET_PORT:-2053}
HTTP_PORT: ${HTTP_PORT:-80}
HTTPS_PORT: ${HTTPS_PORT:-443}
DB_MYSQL_HOST: "${DB_MYSQL_HOST:-database}"
DB_MYSQL_PORT: ${DB_MYSQL_PORT:-3306}
DB_MYSQL_NAME: "${DB_MYSQL_NAME:-avideo}"
DB_MYSQL_USER: "${DB_MYSQL_USER:-avideo}"
DB_MYSQL_PASSWORD: "${DB_MYSQL_PASSWORD:-avideo}"
SERVER_NAME: "${SERVER_NAME:-localhost}"
ENABLE_PHPMYADMIN: "${ENABLE_PHPMYADMIN:-yes}"
PHPMYADMIN_PORT: ${PHPMYADMIN_PORT:-8081}
PHPMYADMIN_ENCODER_PORT: ${PHPMYADMIN_ENCODER_PORT:-8082}
CREATE_TLS_CERTIFICATE: "${CREATE_TLS_CERTIFICATE:-yes}"
TLS_CERTIFICATE_FILE: "${TLS_CERTIFICATE_FILE:-/etc/apache2/ssl/localhost.crt}"
TLS_CERTIFICATE_KEY: "${TLS_CERTIFICATE_KEY:-/etc/apache2/ssl/localhost.key}"
CONTACT_EMAIL: "${CONTACT_EMAIL:-admin@localhost}"
SYSTEM_ADMIN_PASSWORD: "${SYSTEM_ADMIN_PASSWORD:-password}"
WEBSITE_TITLE: "${WEBSITE_TITLE:-AVideo}"
MAIN_LANGUAGE: "${MAIN_LANGUAGE:-en_US}"
NGINX_RTMP_PORT: "${NGINX_RTMP_PORT:-1935}"
NGINX_HTTP_PORT: "${NGINX_HTTP_PORT:-8080}"
NGINX_HTTPS_PORT: "${NGINX_HTTPS_PORT:-8443}"
MEMCACHED_HOST: memcached
env_file:
- .env
ports:
- "${SOCKET_PORT:-2053}:2053"
- "${HTTP_PORT:-80}:80"
- "${HTTPS_PORT:-443}:443"
volumes:
- "./.compose/HLS:/HLS"
- "./:/var/www/html/AVideo"
- "./.compose/videos:/var/www/html/AVideo/videos"
- "./.compose/encoder:/var/www/html/AVideo/Encoder"
- "./.compose/letsencrypt:/etc/letsencrypt/"
depends_on:
database:
condition: service_healthy
database_encoder:
condition: service_healthy
memcached:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail http://localhost || exit 1"]
interval: 30s
timeout: 10s
retries: 3
deploy:
resources:
limits:
cpus: "${CPUS_LIMIT:-4}"
memory: "${MEMORY_LIMIT:-16G}"
networks:
- app_net
live:
build:
context: .
dockerfile: Dockerfile.live
restart: "unless-stopped"
volumes:
- "./.compose/HLS:/HLS"
- "./.compose/letsencrypt:/etc/letsencrypt/"
environment:
SERVER_NAME: "${SERVER_NAME:-localhost}"
CREATE_TLS_CERTIFICATE: "${CREATE_TLS_CERTIFICATE:-yes}"
TLS_CERTIFICATE_FILE: "${TLS_CERTIFICATE_FILE:-/etc/apache2/ssl/localhost.crt}"
TLS_CERTIFICATE_KEY: "${TLS_CERTIFICATE_KEY:-/etc/apache2/ssl/localhost.key}"
NGINX_RTMP_PORT: "${NGINX_RTMP_PORT:-1935}"
NGINX_HTTP_PORT: "${NGINX_HTTP_PORT:-8080}"
NGINX_HTTPS_PORT: "${NGINX_HTTPS_PORT:-8443}"
MEMCACHED_HOST: memcached
env_file:
- .env
ports:
- "${NGINX_RTMP_PORT:-1935}:1935"
- "${NGINX_HTTP_PORT:-8080}:8080"
- "${NGINX_HTTPS_PORT:-8443}:8443"
depends_on:
avideo:
condition: service_healthy
database:
condition: service_healthy
memcached:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail http://localhost:8080 || exit 1"]
interval: 30s
timeout: 10s
retries: 3
deploy:
resources:
limits:
cpus: "${CPUS_LIMIT:-2}"
memory: "${MEMORY_LIMIT:-8G}"
networks:
- app_net
database:
image: "mariadb:latest"
restart: "unless-stopped"
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_INITDB_SKIP_TZINFO: 1
MYSQL_DATABASE: "${DB_MYSQL_NAME}"
MYSQL_USER: "${DB_MYSQL_USER}"
MYSQL_PASSWORD: "${DB_MYSQL_PASSWORD}"
volumes:
- ./.compose/db:/var/lib/mysql
healthcheck:
test: "mariadb-admin ping -h localhost -u $DB_MYSQL_USER -p$DB_MYSQL_PASSWORD"
interval: 30s
timeout: 10s
retries: 3
deploy:
resources:
limits:
cpus: "2"
memory: "4G"
reservations:
cpus: '1'
memory: '1G'
networks:
- app_net
database_encoder:
image: "mariadb:latest"
restart: "unless-stopped"
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_INITDB_SKIP_TZINFO: 1
MYSQL_DATABASE: "${DB_MYSQL_NAME}_encoder"
MYSQL_USER: "${DB_MYSQL_USER}"
MYSQL_PASSWORD: "${DB_MYSQL_PASSWORD}"
volumes:
- ./.compose/db_encoder:/var/lib/mysql
healthcheck:
test: "mariadb-admin ping -h localhost -u $DB_MYSQL_USER -p$DB_MYSQL_PASSWORD"
interval: 30s
timeout: 10s
retries: 3
networks:
- app_net
phpmyadmin:
image: "phpmyadmin/phpmyadmin"
restart: "unless-stopped"
environment:
PMA_HOST: "${DB_MYSQL_HOST}"
PMA_PORT: ${DB_MYSQL_PORT}
PMA_CONTROLUSER: "${DB_MYSQL_USER}"
PMA_CONTROLPASS: "${DB_MYSQL_PASSWORD}"
HIDE_PHP_VERSION: "true"
ports:
- "${PHPMYADMIN_PORT:-8081}:80"
depends_on:
- database
networks:
- app_net
phpmyadmin_encoder:
image: "phpmyadmin/phpmyadmin"
restart: "unless-stopped"
environment:
PMA_HOST: "${DB_MYSQL_HOST}_encoder"
PMA_PORT: ${DB_MYSQL_PORT}
PMA_CONTROLUSER: "${DB_MYSQL_USER}"
PMA_CONTROLPASS: "${DB_MYSQL_PASSWORD}"
HIDE_PHP_VERSION: "true"
ports:
- "${PHPMYADMIN_ENCODER_PORT:-8082}:80"
depends_on:
- database_encoder
networks:
- app_net
memcached:
image: memcached:alpine
restart: "unless-stopped"
command: >
sh -c "memcached -m 128 -c 1024 -t $(nproc) -vv"
ports:
- "11211:11211"
deploy:
resources:
limits:
cpus: "${CPUS_LIMIT:-1}"
memory: "${MEMORY_LIMIT:-256M}"
reservations:
cpus: '0.5'
memory: '128M'
networks:
- app_net
networks:
app_net:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16