diff options
| author | Geo Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2026-07-12 15:51:52 +0300 |
|---|---|---|
| committer | Geo Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2026-07-12 15:51:52 +0300 |
| commit | 02608271bb2a9f3a65ed536984d306ee14b48e34 (patch) | |
| tree | 3f23ec48a694ec014e845c4f70d9b5f1c065403c /docker | |
| download | kalassa-master.tar.gz kalassa-master.tar.bz2 kalassa-master.zip | |
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/bin/docker-entrypoint.sh | 26 | ||||
| -rw-r--r-- | docker/bin/optimize.sh | 17 | ||||
| -rw-r--r-- | docker/config/000-default.conf | 21 | ||||
| -rw-r--r-- | docker/config/composer-naked.json | 12 | ||||
| -rw-r--r-- | docker/config/composer-redis.json | 13 | ||||
| -rw-r--r-- | docker/config/default-ssl.conf | 131 | ||||
| -rw-r--r-- | docker/config/info.md | 69 | ||||
| -rw-r--r-- | docker/config/msmtprc.kill | 12 | ||||
| -rw-r--r-- | docker/config/opcache.ini | 9 | ||||
| -rw-r--r-- | docker/config/php-ext-xdebug.ini | 24 | ||||
| -rw-r--r-- | docker/config/php-overrides.ini | 3 |
11 files changed, 337 insertions, 0 deletions
diff --git a/docker/bin/docker-entrypoint.sh b/docker/bin/docker-entrypoint.sh new file mode 100644 index 0000000..ecfa33a --- /dev/null +++ b/docker/bin/docker-entrypoint.sh @@ -0,0 +1,26 @@ +#! /bin/sh + +# setup writable directories +# ------------------------------------------------------------------------------ +# grand to storage directory writable permissions +# set storage directory to apache's user ownership +chmod -R 755 /var/www/storage +chown -R www-data:www-data /var/www/storage +# chown -R www-data:www-data /var/www/public/files +# chmod -R 757 /var/www/public/files + +# prepare auutoloading +# ------------------------------------------------------------------------------ +# (cd /var/www ; composer update) +# (cd /var/www ; composer dump-autoload) + + +### set -ex +### +### /cloud_sql_proxy -instances=pythia-251711:europe-west4:pythia-db-eu -dir=/cloudsql -credential_file=/cloudsqlproxy.json & +### sleep 3 + +# start apache +# ------------------------------------------------------------------------------ +# End with running the original command +exec /usr/sbin/apache2ctl -D FOREGROUND diff --git a/docker/bin/optimize.sh b/docker/bin/optimize.sh new file mode 100644 index 0000000..02be749 --- /dev/null +++ b/docker/bin/optimize.sh @@ -0,0 +1,17 @@ +!/bin/bash -x + +# optimize performance or development + +if test ["$1" == "PRODUCTION"] ; then + + docker-php-ext-install opcache + # copy OPcache parametres + # etc... + + # install and enable JIT + + # else + # maybe install some development tools + # like XDebug + +fi
\ No newline at end of file diff --git a/docker/config/000-default.conf b/docker/config/000-default.conf new file mode 100644 index 0000000..fafa395 --- /dev/null +++ b/docker/config/000-default.conf @@ -0,0 +1,21 @@ +<VirtualHost *:${PORT}> + + # DEFAULT SITE CONFIGURATION + # (optional settings are commented with `##`) + # --- -- -- - - - + + ## ServerName www.example.com + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/public + + ## LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + ## Include conf-available/serve-cgi-bin.conf + +</VirtualHost> + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
\ No newline at end of file diff --git a/docker/config/composer-naked.json b/docker/config/composer-naked.json new file mode 100644 index 0000000..171c35e --- /dev/null +++ b/docker/config/composer-naked.json @@ -0,0 +1,12 @@ +{ + "require": { + "phpmailer/phpmailer": "^6.8", + "erusev/parsedown": "^1.7" + }, + "autoload": { + "classmap": [ + "/var/www/core/classes", + "/var/www/public/app" + ] + } +}
\ No newline at end of file diff --git a/docker/config/composer-redis.json b/docker/config/composer-redis.json new file mode 100644 index 0000000..facb782 --- /dev/null +++ b/docker/config/composer-redis.json @@ -0,0 +1,13 @@ +{ + "require": { + "predis/predis": "^2.0", + "phpmailer/phpmailer": "^6.8", + "erusev/parsedown": "^1.7" + }, + "autoload": { + "classmap": [ + "/var/www/core/classes", + "/var/www/public/app" + ] + } +}
\ No newline at end of file diff --git a/docker/config/default-ssl.conf b/docker/config/default-ssl.conf new file mode 100644 index 0000000..deeebc5 --- /dev/null +++ b/docker/config/default-ssl.conf @@ -0,0 +1,131 @@ +<IfModule mod_ssl.c> + <VirtualHost _default_:443> + # DEFAULT _SSL_ SITE CONFIGURATION + # (optional settings are commented with `##`) + # --- -- -- - - - + + ServerAdmin webmaster@localhost + + DocumentRoot /var/www/public + + # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, + # error, crit, alert, emerg. + ## LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + ## Include conf-available/serve-cgi-bin.conf + + # SSL Engine Switch: + # Enable/Disable SSL for this virtual host. + SSLEngine on + + # A self-signed (snakeoil) certificate can be created by installing + # the ssl-cert package. See + # /usr/share/doc/apache2/README.Debian.gz for more info. + # If both key and certificate are stored in the same file, only the + # SSLCertificateFile directive is needed. + SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem + SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key + + # Server Certificate Chain: + # Point SSLCertificateChainFile at a file containing the + # concatenation of PEM encoded CA certificates which form the + # certificate chain for the server certificate. Alternatively + # the referenced file can be the same as SSLCertificateFile + # when the CA certificates are directly appended to the server + # certificate for convinience. + ## SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt + + # Certificate Authority (CA): + # Set the CA certificate verification path where to find CA + # certificates for client authentication or alternatively one + # huge file containing all of them (file must be PEM encoded) + # Note: Inside SSLCACertificatePath you need hash symlinks + # to point to the certificate files. Use the provided + # Makefile to update the hash symlinks after changes. + ## SSLCACertificatePath /etc/ssl/certs/ + ## SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt + + # Certificate Revocation Lists (CRL): + # Set the CA revocation path where to find CA CRLs for client + # authentication or alternatively one huge file containing all + # of them (file must be PEM encoded) + # Note: Inside SSLCARevocationPath you need hash symlinks + # to point to the certificate files. Use the provided + # Makefile to update the hash symlinks after changes. + ## SSLCARevocationPath /etc/apache2/ssl.crl/ + ## SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl + + # Client Authentication (Type): + # Client certificate verification type and depth. Types are + # none, optional, require and optional_no_ca. Depth is a + # number which specifies how deeply to verify the certificate + # issuer chain before deciding the certificate is not valid. + ## SSLVerifyClient require + ## SSLVerifyDepth 10 + + # SSL Engine Options: + # Set various options for the SSL engine. + # o FakeBasicAuth: + # Translate the client X.509 into a Basic Authorisation. This means that + # the standard Auth/DBMAuth methods can be used for access control. The + # user name is the `one line' version of the client's X.509 certificate. + # Note that no password is obtained from the user. Every entry in the user + # file needs this password: `xxj31ZMTZzkVA'. + # o ExportCertData: + # This exports two additional environment variables: SSL_CLIENT_CERT and + # SSL_SERVER_CERT. These contain the PEM-encoded certificates of the + # server (always existing) and the client (only existing when client + # authentication is used). This can be used to import the certificates + # into CGI scripts. + # o StdEnvVars: + # This exports the standard SSL/TLS related `SSL_*' environment variables. + # Per default this exportation is switched off for performance reasons, + # because the extraction step is an expensive operation and is usually + # useless for serving static content. So one usually enables the + # exportation for CGI and SSI requests only. + # o OptRenegotiate: + # This enables optimized SSL connection renegotiation handling when SSL + # directives are used in per-directory context. + ## SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire + <FilesMatch "\.(cgi|shtml|phtml|php)$"> + SSLOptions +StdEnvVars + </FilesMatch> + <Directory /usr/lib/cgi-bin> + SSLOptions +StdEnvVars + </Directory> + + # SSL Protocol Adjustments: + # The safe and default but still SSL/TLS standard compliant shutdown + # approach is that mod_ssl sends the close notify alert but doesn't wait for + # the close notify alert from client. When you need a different shutdown + # approach you can use one of the following variables: + # o ssl-unclean-shutdown: + # This forces an unclean shutdown when the connection is closed, i.e. no + # SSL close notify alert is send or allowed to received. This violates + # the SSL/TLS standard but is needed for some brain-dead browsers. Use + # this when you receive I/O errors because of the standard approach where + # mod_ssl sends the close notify alert. + # o ssl-accurate-shutdown: + # This forces an accurate shutdown when the connection is closed, i.e. a + # SSL close notify alert is send and mod_ssl waits for the close notify + # alert of the client. This is 100% SSL/TLS standard compliant, but in + # practice often causes hanging connections with brain-dead browsers. Use + # this only for browsers where you know that their SSL implementation + # works correctly. + # Notice: Most problems of broken clients are also related to the HTTP + # keep-alive facility, so you usually additionally want to disable + # keep-alive for those clients, too. Use variable "nokeepalive" for this. + # Similarly, one has to force some clients to use HTTP/1.0 to workaround + # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and + # "force-response-1.0" for this. + # BrowserMatch "MSIE [2-6]" \ + # nokeepalive ssl-unclean-shutdown \ + # downgrade-1.0 force-response-1.0 + + </VirtualHost> +</IfModule> + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
\ No newline at end of file diff --git a/docker/config/info.md b/docker/config/info.md new file mode 100644 index 0000000..3ca1c81 --- /dev/null +++ b/docker/config/info.md @@ -0,0 +1,69 @@ +## About cron jobs + +(on docker containers) + +Dockerfile #1 + + RUN apt-get update && apt-get install cron -y + RUN crontab / + crontab -l | { cat; echo "10 * * * * /usr/local/bin/php /var/www/core/cli/cache-categories.php"; } | crontab - + CMD cron + + + +--- + + +Dockerfile #2 + + RUN apt-get update && \ + apt-get -y install tzdata cron + + RUN cp /usr/share/zoneinfo/Europe/Rome /etc/localtime && \ + echo "Europe/Rome" > /etc/timezone + + #RUN apt-get -y remove tzdata + RUN rm -rf /var/cache/apk/* + + # Copy cron file to the cron.d directory + COPY cron /etc/cron.d/cron + + # Give execution rights on the cron job + RUN chmod 0644 /etc/cron.d/cron + + # Apply cron job + RUN crontab /etc/cron.d/cron + + # Create the log file to be able to run tail + RUN mkdir -p /var/log/cron + + # Add a command to base-image entrypont scritp + RUN sed -i 's/^exec /service cron start\n\nexec /' /usr/local/bin/apache2-foreground + + +--- + +handle cron status + + service cron status + service cron stop + service cron start + + + +--- + + +docker folder: organizing configuration files + + docker + |-- bin: docker-ettrypoint.sh, optimize.sh + | + `-- config: composer*.json opcache.ini php-overides.ini cron-jobs + + +--- + + +check: +* http://www.idein.it/joomla/14-docker-php-apache-with-crontab
\ No newline at end of file diff --git a/docker/config/msmtprc.kill b/docker/config/msmtprc.kill new file mode 100644 index 0000000..5382ecd --- /dev/null +++ b/docker/config/msmtprc.kill @@ -0,0 +1,12 @@ +account default +host mail.roptron.gr +port 587 +tls on +tls_starttls on +tls_trust_file /etc/ssl/certs/ca-certificates.crt +tls_certcheck on +auth on +user my@mail.com +password "YourAwesomeStr0ngP4zzw0rd" +from "my@mail.com" +logfile /var/log/msmtp.log diff --git a/docker/config/opcache.ini b/docker/config/opcache.ini new file mode 100644 index 0000000..6eba8b2 --- /dev/null +++ b/docker/config/opcache.ini @@ -0,0 +1,9 @@ +[opcache] +opcache.enable=1 +opcache.revalidate_freq=0 +opcache.validate_timestamps=0 +opcache.max_accelerated_files=10000 +opcache.memory_consumption=192 +opcache.max_wasted_percentage=10 +opcache.interned_strings_buffer=16 +opcache.fast_shutdown=1
\ No newline at end of file diff --git a/docker/config/php-ext-xdebug.ini b/docker/config/php-ext-xdebug.ini new file mode 100644 index 0000000..4a6a2ed --- /dev/null +++ b/docker/config/php-ext-xdebug.ini @@ -0,0 +1,24 @@ +; [xdebug] + +; uncomment next line to enable xdebug +zend_extension=xdebug + +; modes where xdebug is enabled +xdebug.mode=develop,debug + +; common parametres +xdebug.start_with_request=yes +xdebug.client_port=9003 +; xdebug.remote_handler=dbgp +xdebug.idekey=VSCODE +xdebug.client_host=host.docker.internal +xdebug.log=/usr/local/etc/php/xdebug.log +;error_reporting=E_ALL + + +; Note: +; Remove the comment ; to enable debugging +;zend_extension=xdebug +xdebug.client_host=host.docker.internal +xdebug.start_with_request=yes +xdebug.mode=debug
\ No newline at end of file diff --git a/docker/config/php-overrides.ini b/docker/config/php-overrides.ini new file mode 100644 index 0000000..215db1a --- /dev/null +++ b/docker/config/php-overrides.ini @@ -0,0 +1,3 @@ +upload_max_filesize = 10M +post_max_size = 14M +memory_limit = 256M
\ No newline at end of file |
