From 96b95dc6eea7501bff91e154883d892fedc5a7dc Mon Sep 17 00:00:00 2001 From: PyRowMan <> Date: Wed, 18 Dec 2024 12:01:54 +0100 Subject: [PATCH] Add `.env.dist`, Manticore service, and environment substitution Introduced a new `.env.dist` template to streamline environment variable management. Added Manticore service to the `docker-compose.yml` for enhanced database querying support. Updated `docker-entrypoint.sh` to use `envsubst` for environment substitution when generating `.env`. --- .env.dist | 208 +++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 5 +- docker-entrypoint.sh | 2 +- 3 files changed, 211 insertions(+), 4 deletions(-) create mode 100644 .env.dist diff --git a/.env.dist b/.env.dist new file mode 100644 index 000000000..1aca263d7 --- /dev/null +++ b/.env.dist @@ -0,0 +1,208 @@ +DB_CONNECTION=${DB_CONNECTION} +DB_HOST=${DB_HOST} +DB_PORT=${DB_PORT} +DB_ROOTPASSWORD=${DB_ROOTPASSWORD} +DB_SOCKET=${DB_SOCKET} +DB_USERNAME=${DB_USERNAME} +DB_PASSWORD=${DB_PASSWORD} +DB_DATABASE=${DB_DATABASE} + +COMPOSER_AUTH='${COMPOSER_AUTH}' + +MANTICORESEARCH_HOST=${MANTICORESEARCH_HOST} +MANTICORESEARCH_PORT=${MANTICORESEARCH_PORT} + +ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST} +ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT} +ELASTICSEARCH_SCHEME=${ELASTICSEARCH_SCHEME} +ELASTICSEARCH_USER=${ELASTICSEARCH_USER} +ELASTICSEARCH_PASS=${ELASTICSEARCH_PASS} +ELASTICSEARCH_LOGGING=${ELASTICSEARCH_LOGGING} +ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED} + +NNTP_COMPRESSED_HEADERS=${NNTP_COMPRESSED_HEADERS} +USE_ALTERNATE_NNTP_SERVER=${USE_ALTERNATE_NNTP_SERVER} + +NNTP_USERNAME=${NNTP_USERNAME} +NNTP_PASSWORD=${NNTP_PASSWORD} +NNTP_SERVER=${NNTP_SERVER} +NNTP_PORT=${NNTP_PORT} +NNTP_CONNECTIONS=${NNTP_CONNECTIONS} +NNTP_SSLENABLED=${NNTP_SSLENABLED} +NNTP_SOCKET_TIMEOUT=${NNTP_SOCKET_TIMEOUT} + +NNTP_USERNAME_A=${NNTP_USERNAME_A} +NNTP_PASSWORD_A=${NNTP_PASSWORD_A} +NNTP_SERVER_A=${NNTP_SERVER_A} +NNTP_PORT_A=${NNTP_PORT_A} +NNTP_CONNECTIONS_A=${NNTP_CONNECTIONS_A} +NNTP_SSLENABLED_A=${NNTP_SSLENABLED_A} +NNTP_SOCKET_TIMEOUT_A=${NNTP_SOCKET_TIMEOUT_A} + +NN_MULTIPROCESSING_MAX_CHILD_TIME=${NN_MULTIPROCESSING_MAX_CHILD_TIME} + +ADMIN_USER=${ADMIN_USER} +ADMIN_PASS=${ADMIN_PASS} +ADMIN_EMAIL=${ADMIN_EMAIL} + +APP_NAME=${APP_NAME} +APP_ENV=${APP_ENV} +APP_DEBUG=${APP_DEBUG} +APP_TIMEZONE=${APP_TIMEZONE} +APP_URL=${APP_URL} + +APP_LOCALE=${APP_LOCALE} +APP_FALLBACK_LOCALE=${APP_FALLBACK_LOCALE} +APP_FAKER_LOCALE=${APP_FAKER_LOCALE} + +APP_MAINTENANCE_DRIVER=${APP_MAINTENANCE_DRIVER} +APP_MAINTENANCE_STORE=${APP_MAINTENANCE_STORE} + +BCRYPT_ROUNDS=${BCRYPT_ROUNDS} +APP_KEY=${APP_KEY} +LOG_CHANNEL=${LOG_CHANNEL} +LOG_STACK=${LOG_STACK} +PASSWORD_HASH=${PASSWORD_HASH} + +BROADCAST_CONNECTION=${BROADCAST_CONNECTION} +CACHE_STORE=${CACHE_STORE} +QUEUE_CONNECTION=${QUEUE_CONNECTION} + +REDIS_HOST=${REDIS_HOST} +REDIS_PASSWORD=${REDIS_PASSWORD} +REDIS_PORT=${REDIS_PORT} +REDIS_CLIENT=${REDIS_CLIENT} + +SESSION_DRIVER=${SESSION_DRIVER} +SESSION_DOMAIN=${SESSION_DOMAIN} +SESSION_SECURE_COOKIE=${SESSION_SECURE_COOKIE} +SESSION_ENCRYPT=${SESSION_ENCRYPT} +SESSION_COOKIE=${SESSION_COOKIE} +SESSION_PATH=${SESSION_PATH} + +MAIL_DRIVER=${MAIL_DRIVER} +MAIL_HOST=${MAIL_HOST} +MAIL_PORT=${MAIL_PORT} +MAIL_USERNAME=${MAIL_USERNAME} +MAIL_PASSWORD=${MAIL_PASSWORD} +MAIL_ENCRYPTION=${MAIL_ENCRYPTION} +MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS} +MAIL_FROM_NAME=${MAIL_FROM_NAME} + +AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} +AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} +AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} +AWS_BUCKET=${AWS_BUCKET} + +PUSHER_APP_ID=${PUSHER_APP_ID} +PUSHER_APP_KEY=${PUSHER_APP_KEY} +PUSHER_APP_SECRET=${PUSHER_APP_SECRET} +PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER} + +MIX_PUSHER_APP_KEY=${PUSHER_APP_KEY} +MIX_PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER} + +NOCAPTCHA_ENABLED=${NOCAPTCHA_ENABLED} +NOCAPTCHA_SITEKEY=${NOCAPTCHA_SITEKEY} +NOCAPTCHA_SECRET=${NOCAPTCHA_SECRET} + +SCOUT_DRIVER=${SCOUT_DRIVER} +SCOUT_QUEUE=${SCOUT_QUEUE} + +ITEMS_PER_PAGE=${ITEMS_PER_PAGE} +ITEMS_PER_COVER_PAGE=${ITEMS_PER_COVER_PAGE} +MAX_PAGER_RESULTS=${MAX_PAGER_RESULTS} +ECHOCLI=${ECHOCLI} +RENAME_PAR2=${RENAME_PAR2} +ADD_PAR2=${ADD_PAR2} +RENAME_MUSIC_MEDIAINFO=${RENAME_MUSIC_MEDIAINFO} +CACHE_EXPIRY_SHORT=${CACHE_EXPIRY_SHORT} +CACHE_EXPIRY_MEDIUM=${CACHE_EXPIRY_MEDIUM} +CACHE_EXPIRY_LONG=${CACHE_EXPIRY_LONG} + +SSL_CAFILE=${SSL_CAFILE} +SSL_CAPATH=${SSL_CAPATH} +SSL_VERIFY_PEER=${SSL_VERIFY_PEER} +SSL_VERIFY_HOST=${SSL_VERIFY_HOST} +SSL_ALLOW_SELF_SIGNED=${SSL_ALLOW_SELF_SIGNED} + +SCRAPE_IRC_USERNAME=${SCRAPE_IRC_USERNAME} +SCRAPE_IRC_SERVER=${SCRAPE_IRC_SERVER} +SCRAPE_IRC_PORT=${SCRAPE_IRC_PORT} +SCRAPE_IRC_TLS=${SCRAPE_IRC_TLS} +SCRAPE_IRC_PASSWORD=${SCRAPE_IRC_PASSWORD} + +SMARTY_DEBUG=${SMARTY_DEBUG} +SMARTY_CACHING=${SMARTY_CACHING} +SMARTY_CACHE_LIFE=${SMARTY_CACHE_LIFE} +SMARTY_COMPILE_CHECK=${SMARTY_COMPILE_CHECK} +SMARTY_FORCE_COMPILE=${SMARTY_FORCE_COMPILE} +SMARTY_CACHE_DRIVER=${SMARTY_CACHE_DRIVER} + +TWITCH_CLIENT_ID=${TWITCH_CLIENT_ID} +TWITCH_CLIENT_SECRET=${TWITCH_CLIENT_SECRET} +IGDB_CACHE_LIFETIME=${IGDB_CACHE_LIFETIME} +TMDB_APIKEY=${TMDB_APIKEY} +TMDB_CACHE=${TMDB_CACHE} +TMDB_LOG=${TMDB_LOG} +TVDB_APIKEY=${TVDB_APIKEY} +TVDB_PIN=${TVDB_PIN} +GIANTBOMB_APIKEY=${GIANTBOMB_APIKEY} +ANIDB_APIKEY=${ANIDB_APIKEY} +FANARTTV_APIKEY=${FANARTTV_APIKEY} +OMDB_APIKEY=${OMDB_APIKEY} +TRAKTTV_APIKEY=${TRAKTTV_APIKEY} + +TEMP_UNRAR_PATH=${TEMP_UNRAR_PATH} +TEMP_UNZIP_PATH=${TEMP_UNZIP_PATH} + +VIEW_COMPILED_PATH=${VIEW_COMPILED_PATH} +ASSET_URL=${ASSET_URL} + +TELESCOPE_DRIVER=${TELESCOPE_DRIVER} +TELESCOPE_ENABLED=${TELESCOPE_ENABLED} +TELESCOPE_FULL_IN_PRODUCTION=${TELESCOPE_FULL_IN_PRODUCTION} +TELESCOPE_CACHE_WATCHER=${TELESCOPE_CACHE_WATCHER} +TELESCOPE_COMMAND_WATCHER=${TELESCOPE_COMMAND_WATCHER} +TELESCOPE_DUMP_WATCHER=${TELESCOPE_DUMP_WATCHER} +TELESCOPE_EVENT_WATCHER=${TELESCOPE_EVENT_WATCHER} +TELESCOPE_EXCEPTION_WATCHER=${TELESCOPE_EXCEPTION_WATCHER} +TELESCOPE_JOB_WATCHER=${TELESCOPE_JOB_WATCHER} +TELESCOPE_LOG_WATCHER=${TELESCOPE_LOG_WATCHER} +TELESCOPE_MAIL_WATCHER=${TELESCOPE_MAIL_WATCHER} +TELESCOPE_MODEL_WATCHER=${TELESCOPE_MODEL_WATCHER} +TELESCOPE_NOTIFICATION_WATCHER=${TELESCOPE_NOTIFICATION_WATCHER} +TELESCOPE_QUERY_WATCHER=${TELESCOPE_QUERY_WATCHER} +TELESCOPE_REDIS_WATCHER=${TELESCOPE_REDIS_WATCHER} +TELESCOPE_REQUEST_WATCHER=${TELESCOPE_REQUEST_WATCHER} +TELESCOPE_RESPONSE_SIZE_LIMIT=${TELESCOPE_RESPONSE_SIZE_LIMIT} +TELESCOPE_GATE_WATCHER=${TELESCOPE_GATE_WATCHER} +TELESCOPE_SCHEDULE_WATCHER=${TELESCOPE_SCHEDULE_WATCHER} + +HORIZON_PREFIX=${HORIZON_PREFIX} + +POSTMARK_TOKEN=${POSTMARK_TOKEN} + +PURGE_INACTIVE_USERS=${PURGE_INACTIVE_USERS} + +OTP_ENABLED=${OTP_ENABLED} + +FLARE_KEY=${FLARE_KEY} + +UNRAR_PATH=${UNRAR_PATH} +UNZIP_PATH=${UNZIP_PATH} +CHECK_PASSWORDED_RARS=${CHECK_PASSWORDED_RARS} +DELETE_PASSWORDED_RELEASES=${DELETE_PASSWORDED_RELEASES} +DELETE_POSSIBLE_PASSWORDED_RELEASES=${DELETE_POSSIBLE_PASSWORDED_RELEASES} +EXTRACT_USING_RARINFO=${EXTRACT_USING_RARINFO} +PATH_TO_NZBS=${PATH_TO_NZBS} +PRIVATE_PROFILES=${PRIVATE_PROFILES} +STORE_USER_IP=${STORE_USER_IP} +FFMPEG_PATH=${FFMPEG_PATH} +LAME_PATH=${LAME_PATH} +MEDIAINFO_PATH=${MEDIAINFO_PATH} +TIIMEOUT_PATH=${TIIMEOUT_PATH} +MAGIC_FILE_PATH=${MAGIC_FILE_PATH} +COVERS_PATH=${COVERS_PATH} + +FORUM_FRONTEND_ENABLED=${FORUM_FRONTEND_ENABLED} diff --git a/Dockerfile b/Dockerfile index 68ddd5112..e085099df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,7 @@ FROM composer:latest AS composer-base -#FROM php:8.3-fpm AS php-base FROM dunglas/frankenphp:1-php8.3 -LABEL maintainer="Fossil01" +LABEL maintainer="PyRowMan" ENV SERVER_NAME=:80 ARG MYSQL_CLIENT="mariadb-client" ARG SEVENZIP_VERSION=2407 @@ -15,7 +14,7 @@ COPY --from=composer-base --link /usr/bin/composer /usr/bin/composer RUN apt update \ && apt install -y --no-install-recommends \ - unrar-free 7zip lame libcap2-bin python3 \ + unrar-free 7zip lame libcap2-bin python3 gettext-base \ curl zip unzip git nano bash-completion sudo wget tmux time fonts-powerline \ gnupg libpng-dev dnsutils jq htop iputils-ping net-tools ffmpeg \ jpegoptim webp optipng pngquant libavif-bin watch iproute2 nmon \ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 545546c73..d4c3fad89 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -10,7 +10,7 @@ if [ "$1" != 'php' ] && [ "$1" != 'sh' ]; then # Create .env file if it doesn't exist if [ ! -f .env ]; then echo "Creating .env file from environment variables..." - printenv >> .env + envsubst < .env.dist > .env fi # Check and wait for the database to be ready