Files
egeya-docker/docker/php/egeya-entrypoint.sh
T
2026-09-29 22:08:18 +07:00

72 lines
2.0 KiB
Bash

#!/bin/bash
set -euo pipefail
EGEYA_DATA_DIR="${EGEYA_DATA_DIR:-/var/www/egeya-data}"
EGEYA_DEFAULTS_DIR="${EGEYA_DEFAULTS_DIR:-/opt/egeya-defaults}"
PHP_RUNTIME_INI="/usr/local/etc/php/conf.d/zz-egeya-runtime.ini"
PHP_MEMORY_LIMIT="${PHP_MEMORY_LIMIT:-512M}"
PHP_UPLOAD_MAX_FILESIZE="${PHP_UPLOAD_MAX_FILESIZE:-512M}"
PHP_POST_MAX_SIZE="${PHP_POST_MAX_SIZE:-1024M}"
PHP_MAX_EXECUTION_TIME="${PHP_MAX_EXECUTION_TIME:-300}"
PHP_MAX_INPUT_TIME="${PHP_MAX_INPUT_TIME:-300}"
copy_defaults_if_empty() {
local name="$1"
local source_dir="${EGEYA_DEFAULTS_DIR}/${name}"
local target_dir="${EGEYA_DATA_DIR}/${name}"
mkdir -p "$target_dir"
if [ -d "$source_dir" ] && [ -z "$(find "$target_dir" -mindepth 1 -print -quit)" ]; then
cp -a "$source_dir"/. "$target_dir"/
fi
}
read_secret_to_env() {
local env_name="$1"
local file_env_name="${env_name}_FILE"
local file_path="${!file_env_name:-}"
if [ -n "$file_path" ]; then
if [ ! -r "$file_path" ]; then
printf 'Secret file is not readable: %s\n' "$file_path" >&2
exit 1
fi
printf -v "$env_name" '%s' "$(cat "$file_path")"
export "$env_name"
fi
}
copy_defaults_if_empty user
copy_defaults_if_empty pictures
mkdir -p \
"$EGEYA_DATA_DIR/tmp" \
"$EGEYA_DATA_DIR/tmp/sessions" \
"$EGEYA_DATA_DIR/user/logs"
touch "$EGEYA_DATA_DIR/user/logs/main.log"
chown -R www-data:www-data \
"$EGEYA_DATA_DIR/user" \
"$EGEYA_DATA_DIR/pictures" \
"$EGEYA_DATA_DIR/tmp"
chmod 0700 "$EGEYA_DATA_DIR/tmp" "$EGEYA_DATA_DIR/tmp/sessions"
read_secret_to_env E2_DB_PASSW
cat > "$PHP_RUNTIME_INI" <<EOF_INI
memory_limit = ${PHP_MEMORY_LIMIT}
upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}
post_max_size = ${PHP_POST_MAX_SIZE}
max_execution_time = ${PHP_MAX_EXECUTION_TIME}
max_input_time = ${PHP_MAX_INPUT_TIME}
upload_tmp_dir = ${EGEYA_DATA_DIR}/tmp
sys_temp_dir = ${EGEYA_DATA_DIR}/tmp
session.save_path = ${EGEYA_DATA_DIR}/tmp/sessions
EOF_INI
exec /usr/local/bin/docker-php-entrypoint "$@"