From f1301aec7340026fb381c731fa532bfd7f1d4fd1 Mon Sep 17 00:00:00 2001 From: ne20002 Date: Sat, 31 Aug 2024 14:54:05 +0000 Subject: [PATCH] Aligining the Dockerfile with the version in friendica/docker repository --- .devcontainer/Dockerfile | 82 ++++++++++++++++---- .devcontainer/devcontainer.json | 7 +- .devcontainer/include/00apcu.config.php | 11 +++ .devcontainer/include/01redis.config.php | 17 ++++ .devcontainer/include/autoinstall.config.php | 3 +- .devcontainer/include/zz-docker.config.php | 34 ++++++++ .devcontainer/postCreate.sh | 12 ++- .devcontainer/postCreateApacheSetup.sh | 10 ++- .devcontainer/postCreateFriendicaSetup.sh | 10 +++ 9 files changed, 157 insertions(+), 29 deletions(-) create mode 100644 .devcontainer/include/00apcu.config.php create mode 100644 .devcontainer/include/01redis.config.php create mode 100644 .devcontainer/include/zz-docker.config.php diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 626f3bf18e..05232b8329 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,7 +1,11 @@ -ARG VARIANT="8.0-apache-bullseye" +ARG VARIANT="8.2-apache-bullseye" FROM mcr.microsoft.com/vscode/devcontainers/php:${VARIANT} ARG DEBIAN_FRONTEND=noninteractive +ARG apcu_version=5.1.23 +ARG memcached_version=3.2.0 +ARG redis_version=6.0.2 +ARG imagick_version=3.7.0 RUN apt-get update -y; @@ -11,12 +15,22 @@ RUN apt-get install -y mariadb-client # Base packages RUN apt install -y vim software-properties-common sudo nano gnupg2 -RUN apt-get install -y \ +# entrypoint.sh and cron.sh dependencies +RUN apt-get install -y --no-install-recommends \ + rsync \ + bzip2 \ + msmtp \ + tini + +RUN apt-get install -y --no-install-recommends \ + bash \ libpng-dev \ libjpeg62-turbo-dev \ libtool \ libmagick++-dev \ libmemcached-dev \ + zlib1g-dev \ + libssl-dev \ libgraphicsmagick1-dev \ libfreetype6-dev \ libwebp-dev \ @@ -25,18 +39,58 @@ RUN apt-get install -y \ libldap2-dev \ libgmp-dev \ libmagickcore-6.q16-6-extra \ - && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \ - && docker-php-ext-install -j$(nproc) \ - pdo_mysql \ - gd \ - exif \ - zip \ - opcache \ - ctype \ - pcntl \ - ldap \ - gmp \ - intl + ; \ + \ + docker-php-ext-configure gd \ + --with-freetype \ + --with-jpeg \ + --with-webp \ + ; \ + docker-php-ext-install -j "$(nproc)" \ + pdo_mysql \ + gd \ + exif \ + zip \ + opcache \ + ctype \ + pcntl \ + ldap \ + gmp \ + intl + +# pecl will claim success even if one install fails, so we need to perform each install separately +RUN pecl install apcu-${apcu_version}; \ + pecl install memcached-${memcached_version}; \ +# pecl install redis-${redis_version}; \ +# pecl install imagick-${imagick_version}; \ + docker-php-ext-enable \ + apcu \ + memcached +# redis \ +# imagick RUN apt-get clean -y && rm -rf /var/lib/apt/lists/* +ENV PHP_MEMORY_LIMIT 512M +ENV PHP_UPLOAD_LIMIT 512M + +RUN { \ + echo 'opcache.enable=1' ; \ + echo 'opcache.interned_strings_buffer=8'; \ + echo 'opcache.max_accelerated_files=10000'; \ + echo 'opcache.memory_consumption=128'; \ + echo 'opcache.save_comments=1'; \ + echo 'opcache.revalidte_freq=1'; \ + } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + \ + echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + \ + { \ + echo 'memory_limit=${PHP_MEMORY_LIMIT}'; \ + echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \ + echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \ + } > /usr/local/etc/php/conf.d/friendica.ini; \ + ln -s /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini; \ + \ + mkdir /var/www/data; \ + chmod -R g=u /var/www diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index e94e4d713d..50d0fb384d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -19,9 +19,6 @@ "postStartCommand": "service apache2 start", "forwardPorts": [ - 80, - 443, - 3306, 8080 ], @@ -38,8 +35,8 @@ "php.suggest.basic": false } } - }, + } // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - "remoteUser": "vscode" + //"remoteUser": "root" } diff --git a/.devcontainer/include/00apcu.config.php b/.devcontainer/include/00apcu.config.php new file mode 100644 index 0000000000..2e5ebcf53e --- /dev/null +++ b/.devcontainer/include/00apcu.config.php @@ -0,0 +1,11 @@ + [ + 'cache_driver' => 'apcu', + ], +]; diff --git a/.devcontainer/include/01redis.config.php b/.devcontainer/include/01redis.config.php new file mode 100644 index 0000000000..2ea29bd749 --- /dev/null +++ b/.devcontainer/include/01redis.config.php @@ -0,0 +1,17 @@ + [ + 'session_handler' => 'cache', + 'distributed_cache_driver' => 'redis', + 'lock_driver' => 'redis', + 'redis_host' => getenv('REDIS_HOST'), + 'redis_port' => (getenv('REDIS_PORT') ?: ''), + 'redis_password' => (getenv('REDIS_PW') ?: ''), + 'redis_db' => (getenv('REDIS_DB') ?: 0), + ], + ]; +} else { + return []; +} diff --git a/.devcontainer/include/autoinstall.config.php b/.devcontainer/include/autoinstall.config.php index 57ad41e928..c9e2026354 100644 --- a/.devcontainer/include/autoinstall.config.php +++ b/.devcontainer/include/autoinstall.config.php @@ -31,7 +31,6 @@ return [ 'default_timezone' => 'UTC', 'language' => 'en', 'basepath' => '${workspaceFolder}', - 'url' => 'http://${ServerName}:${ServerPort}', - 'pidfile' => '/tmp/daemon.pid', + 'url' => 'http://${ServerName}:${ServerPort}' ], ]; diff --git a/.devcontainer/include/zz-docker.config.php b/.devcontainer/include/zz-docker.config.php new file mode 100644 index 0000000000..a74a08bbb9 --- /dev/null +++ b/.devcontainer/include/zz-docker.config.php @@ -0,0 +1,34 @@ + [ + // Necessary because otherwise the daemon isn't working + 'pidfile' => '/tmp/friendica.pid', + + 'logfile' => '/var/www/html/friendica.log', + 'loglevel' => 'notice', + ], + 'storage' => [ + 'filesystem_path' => '/var/www/html/storage', + ], +]; + +if (!empty(getenv('FRIENDICA_NO_VALIDATION'))) { + $config['system']['disable_url_validation'] = true; + $config['system']['disable_email_validation'] = true; +} + +if (!empty(getenv('SMTP_DOMAIN'))) { + $smtp_from = !empty(getenv('SMTP_FROM')) ? getenv('SMTP_FROM') : 'no-reply'; + + $config['config']['sender_email'] = $smtp_from . "@" . getenv('SMTP_DOMAIN'); +} + +return $config; diff --git a/.devcontainer/postCreate.sh b/.devcontainer/postCreate.sh index d7072f38b5..0ee0c93764 100755 --- a/.devcontainer/postCreate.sh +++ b/.devcontainer/postCreate.sh @@ -13,17 +13,15 @@ mkdir -p .vscode && cp .devcontainer/launch.json .vscode/launch.json envsubst < $workspaceFolder/.devcontainer/include/my.cnf > /home/vscode/.my.cnf -#Make the workspace directory the docroot +# Make the workspace directory the docroot echo ">>> Symlink $DocumentRoot to $workspaceFolder" sudo rm -rf $DocumentRoot sudo ln -fs $workspaceFolder $DocumentRoot +# Set proper permissions +sudo chown -R $developmentUser:www-data $workspaceFolder +sudo chmod -R g=u $workspaceFolder + echo 'error_reporting=0' | sudo tee /usr/local/etc/php/conf.d/no-warn.ini -# create log file -mkdir -p log -touch log/friendica.log -chmod 666 log/friendica.log - - exit 0 diff --git a/.devcontainer/postCreateApacheSetup.sh b/.devcontainer/postCreateApacheSetup.sh index ca4f87aa2b..d393a76a58 100755 --- a/.devcontainer/postCreateApacheSetup.sh +++ b/.devcontainer/postCreateApacheSetup.sh @@ -17,7 +17,15 @@ sudo chmod 644 /etc/ssl/private/friendica.key sudo chmod 644 /etc/ssl/certs/friendica.crt sudo cp /tmp/001-friendica.conf /etc/apache2/sites-available/001-friendica.conf -sudo a2enmod rewrite actions ssl +sudo a2enmod rewrite actions ssl remoteip +{ + echo RemoteIPHeader X-Real-IP ; + echo RemoteIPTrustedProxy 10.0.0.0/8 ; + echo RemoteIPTrustedProxy 172.16.0.0/12 ; + echo RemoteIPTrustedProxy 192.168.0.0/16 ; +} | sudo tee /etc/apache2/conf-available/remoteip.conf > /dev/null +sudo a2enconf remoteip + sudo a2ensite 001-friendica sudo a2dissite 000-default diff --git a/.devcontainer/postCreateFriendicaSetup.sh b/.devcontainer/postCreateFriendicaSetup.sh index f575988a82..c1c518ca20 100755 --- a/.devcontainer/postCreateFriendicaSetup.sh +++ b/.devcontainer/postCreateFriendicaSetup.sh @@ -9,6 +9,9 @@ FRIENDICA_PHP_PATH=$(which php) export FRIENDICA_PHP_PATH envsubst < $workspaceFolder/.devcontainer/include/autoinstall.config.php > /tmp/autoinstall.config.php +cp $workspaceFolder/.devcontainer/include/00apcu.config.php $workspaceFolder/config/00apcu.config.php +cp $workspaceFolder/.devcontainer/include/01redis.config.php $workspaceFolder/config/01redis.config.php +cp $workspaceFolder/.devcontainer/include/zz-docker.config.php $workspaceFolder/config/zz-docker.config.php cd $DocumentRoot @@ -30,4 +33,11 @@ bin/console user password "$ADMIN_NICK" "$ADMIN_PASSW" bin/console user add "$USER_NICK" "$USER_NICK" "$USER_NICK@$ServerAlias" en http://friendica.local/profile/$USER_NICK bin/console user password "$USER_NICK" "$USER_PASSW" +# create log file +#mkdir -p $workspaceFolder/log +#touch $workspaceFolder/log/friendica.log +#chmod 666 $workspaceFolder/log/friendica.log +touch $workspaceFolder/friendica.log +chmod 666 $workspaceFolder/friendica.log + exit 0