#!/bin/sh set -e log() { echo "[$0] [$(date +%Y-%m-%dT%H:%M:%S)] $*" } # version_greater A B returns whether A > B version_greater() { [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] } # return true if specified directory is empty directory_empty() { [ -z "$(ls -A "$1/")" ] } run_as() { if [ "$(id -u)" = 0 ]; then su - www-data -s /bin/sh -c "$1" else sh -c "$1" fi } if [ ! -f /usr/local/etc/php/php.ini ]; then log "Initializing PHP configuration..." cat < /etc/php/7.4/fpm/php.ini date.timezone = "${PHP_INI_DATE_TIMEZONE}" memory_limit = ${PHP_MEMORY_LIMIT} file_uploads = On upload_max_filesize = ${PHP_MAX_UPLOAD} post_max_size = ${PHP_MAX_UPLOAD} max_execution_time = ${PHP_MAX_EXECUTION_TIME} sendmail_path = /usr/sbin/sendmail -t -i extension = calendar.so EOF fi if [ ! -d /var/www/documents ]; then log "Initializing Dolibarr documents directory..." mkdir -p /var/www/documents fi log "Updating Dolibarr users and group..." usermod -u "$WWW_USER_ID" www-data groupmod -g "$WWW_GROUP_ID" www-data log "Updating Dolibarr folder ownership..." chown -R www-data:www-data /var/www if [ ! -d /var/www/html/conf/ ]; then log "Initializing Dolibarr HTML configuration directory..." mkdir -p /var/www/html/conf/ fi # Create a default config if autoconfig enabled if [ -n "$DOLI_AUTO_CONFIGURE" ] && [ ! -f /var/www/html/conf/conf.php ]; then log "Initializing Dolibarr HTML configuration..." cat < /var/www/html/conf/conf.php /var/www/documents/install.lock chown www-data:www-data /var/www/documents/install.lock chmod 400 /var/www/documents/install.lock elif [ -n "$DOLI_AUTO_CONFIGURE" ] && [ ! -f /var/www/documents/install.lock ]; then log "Create forced values for first Dolibarr install..." cat < /var/www/html/install/install.forced.php /var/www/documents/.docker-container-version fi log "Serving Dolibarr...$@" exec "$@"