summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
Diffstat (limited to 'docker')
-rw-r--r--docker/bin/docker-entrypoint.sh26
-rw-r--r--docker/bin/optimize.sh17
-rw-r--r--docker/config/000-default.conf21
-rw-r--r--docker/config/composer-naked.json12
-rw-r--r--docker/config/composer-redis.json13
-rw-r--r--docker/config/default-ssl.conf131
-rw-r--r--docker/config/info.md69
-rw-r--r--docker/config/msmtprc.kill12
-rw-r--r--docker/config/opcache.ini9
-rw-r--r--docker/config/php-ext-xdebug.ini24
-rw-r--r--docker/config/php-overrides.ini3
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