]> git.mxchange.org Git - friendica.git/commitdiff
Aligining the Dockerfile with the version in friendica/docker repository
authorne20002 <ne20002@gmx.ch>
Sat, 31 Aug 2024 14:54:05 +0000 (14:54 +0000)
committerne20002 <ne20002@gmx.ch>
Sun, 1 Sep 2024 17:14:49 +0000 (17:14 +0000)
.devcontainer/Dockerfile
.devcontainer/devcontainer.json
.devcontainer/include/00apcu.config.php [new file with mode: 0644]
.devcontainer/include/01redis.config.php [new file with mode: 0644]
.devcontainer/include/autoinstall.config.php
.devcontainer/include/zz-docker.config.php [new file with mode: 0644]
.devcontainer/postCreate.sh
.devcontainer/postCreateApacheSetup.sh
.devcontainer/postCreateFriendicaSetup.sh

index 626f3bf18e861daf8e7a6ac17ff669648bf23111..05232b832958e2df91c6790cf3205ea546bfae3b 100644 (file)
@@ -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
index e94e4d713dd8ae528501c90bf1d0d68422919829..50d0fb384d39dd8169babc4ace1c64ac96902f7d 100644 (file)
@@ -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 (file)
index 0000000..2e5ebcf
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * If nothing else set, use APCu as a caching driver (best performance for local caching)
+ */
+
+return [
+       'system' => [
+               'cache_driver' => 'apcu',
+       ],
+];
diff --git a/.devcontainer/include/01redis.config.php b/.devcontainer/include/01redis.config.php
new file mode 100644 (file)
index 0000000..2ea29bd
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+
+if (getenv('REDIS_HOST')) {
+       return [
+               'system' => [
+                       '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 [];
+}
index 57ad41e928c12ce39bcf963c56a8066088383a0b..c9e2026354023fb2f78a15b739613cb0f1d29973 100644 (file)
@@ -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 (file)
index 0000000..a74a08b
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * Fallback config to make it possible overwriting config values
+ * because of docker environment variables
+ *
+ * This doesn't affect DB configurations, but will replace other config values
+ */
+
+$config = [
+       'system' => [
+               // 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;
index d7072f38b51e203bd6ce6a6c763564f81432d211..0ee0c9376423923331873be222d2653c1336300d 100755 (executable)
@@ -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
 
-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
+# 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
 
 exit 0
index ca4f87aa2b24bac511d898bdf0a009614915f824..d393a76a58d2022f0924d9aea6e0330360926070 100755 (executable)
@@ -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
 
index f575988a82acd5ac8fcc8d4adcfed4fccf2b2e89..c1c518ca20ceed60784c322eb112d65abc45f1d8 100755 (executable)
@@ -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