Giter VIP home page Giter VIP logo

docker.me-php's Introduction

me-php Images

Die me-php Images geben eine schnelle und einfache Möglichkeit einen Webserver auf Docker-Basis aufzusetzen.
Nachfolgend wird als hosting name me-team.net genutzt!

Getting Started

Man erstellt eine docker-compose.yml unter /srv/www/vhosts/me-team.net/docker/docker-compose.yml
Diese wird wie im nächsten punkt erläutert.

Versionen:

Versionen des me-php Images werden mit dem Tag unterschieden, welches nach dem ":" steht.
Bis auf die PHP Version und davon abhängige Versionen unterscheiden sich die Images nicht.

Apache-Module:

core_module, so_module, watchdog_module, http_module, log_config_module, logio_module, version_module, unixd_module, access_compat_module, alias_module, auth_basic_module, authn_core_module, authn_file_module, authz_core_module, authz_host_module, authz_user_module, autoindex_module, deflate_module, dir_module, env_module, filter_module, headers_module, mime_module, mpm_prefork_module, negotiation_module, php7_module, remoteip_module, reqtimeout_module, rewrite_module, setenvif_module, socache_shmcb_module, ssl_module, status_module

PHP-Extensions:

[PHP Modules] : apcu bcmath Core ctype curl date dom exif fileinfo filter ftp gd hash iconv json ldap libxml mbstring mcrypt mysqli mysqlnd OAuth openssl pcntl pcre PDO pdo_mysql pdo_sqlite pdo_sqlsrv Phar posix pspell readline Reflection session SimpleXML soap SPL sqlite3 sqlsrv standard tokenizer xdebug xml xmlreader xmlrpc xmlwriter Zend OPcache zip zlib
[Zend Modules] : Xdebug Zend OPcache

Apps

nano, git, composer, yarn, nodejs, npm

Envorinment Variablen

Envorinment Variablen werden dazu genutzt um das Image für das jeweilige hosting anzupassen.

Für diese Images gibt es folgende Envorinment-Variablen:

  • DOCKER_HOST_IP - IP-Adresse des Docker-Host-Containers
  • SERVER_NAME - Fully qualified domain name (Default: me-php.garmisch.net)
  • MYHOSTNAME - Alias für SERVER_NAME für Postfix
  • REMOTE_IP_PROXY - IP Adresse des ReverseProxy (Default: Host_IP)
  • RELAYHOST - Adresse des Relay-Servers
  • RELAYHOST_PORT - Port des Relay-Servers
  • POSTFIX_MYHOSTNAME - Myhostname für Postfix
  • POSTFIX_MYDESTINATION - MYDESTINATION für Postfix (Default: localhost.localdomain, localhost)
  • POSTFIX_SMTP_USERNAME - USERNAME für SMTP-Versand (SASL-Auth)
  • POSTFIX_SMTP_PASSWORD - PASSWORD für SMTP-Versand (SASL-Auth)
  • POSTFIX_SMTP_AUTHTLS - SASL-Auth mit TLS [yes|no] (Default: no)
  • POSTFIX_SMTP_SENDER - Absender auf diese Mailadresse ändern
  • POSTFIX_SENDER_CANONICAL_MAPS - sender_canonical_maps aktivieren. Absender-Adresse wird auf POSTFIX_SMTP_SENDER gesetzt. Vorsicht: REPLY-TO funktioniert damit nicht!
  • POSTFIX_SENDER_HEADER_CHANGE - smtp_header_checks aktivieren. Absender-Adresse wird auf POSTFIX_SMTP_SENDER gesetzt. Vorsicht: Hostname muss valid und auflösbar sein!
  • DOCUMENT_ROOT - Document Root für apache (Ordner der index.html/php)
  • ALIASES - Eine Liste von Aliasen für den Apache mit ";" getrennt.
  • START_RSYSLOGD - Soll der Syslog-Daemon gestartet werden (Default: no)
  • START_CROND - Soll der Cron-Daemon gestartet werden (Default: no)
  • START_POSTFIX - Soll Postfix gestartet werden (Default: yes)
  • APACHE_TIMEOUT - Timeout für Apache2 in Sekunden (default:300)
  • SSL_VHOST - SSL-Vhost aktivieren? Zertifikats-Dateien müssen über volume reingemappt werden. [yes|no] (default: no)
  • SSL_CERT - Pfad zum SSL-Zertifikat (bsp: /etc/ssl/sslvw/mycandy.de/certificate.crt)
  • SSL_CACERT - Pfad zum SSL-CA-Zertifikat (bsp: /etc/ssl/sslvw/mycandy.de/cert.bundle)
  • SSL_PRIVATEKEY - Pfad zum SSL-Private-Key (bsp: /etc/ssl/sslvw/mycandy.de/private.key)
  • PHP_ENABLE_XDEBUG - XDEBUG PHP-Extension aktivieren / mit Option um Modul-Datei zu aktivieren [yes|no] (Default: no)
  • PHP_ENABLE_SQLSRV - SQLSRV PHP-Extension aktivieren / mit Option um Modul-Datei zu aktivieren [yes|no] (Default: no)

docker-compose.yml

version: '3'

services:
    webserver_me_team:
        container_name: webserver_me_team
        image: marschallelectronics/me-php:7.1-apache
        volumes:
            - ../public/www/:/var/www/html/
        ports:
            - '8020:80'
        environment:
            SERVER_NAME: me-team.net
            REMOTE_IP_PROXY: 172.18.0.1
            RELAYHOST: mx2.garmisch.net
            DOCUMENT_ROOT: /var/www/html
            ALIASES:
                /foo "/var/www/html/foo/";
                /bar "/var/www/html/bar/";
                /bsp "/var/www/html/bsp/";
  • container_name - Eindeutiger Name des Containers (Einzigartiger Name)
  • image - Name des Image das genutzt werden soll
  • volumes - Eine Liste von "Volumes" die genutzt werden
  • ports - Externer Port / Container Port
  • environment - Variablen die an den Container gebeben werden (Mehr im Nächstem Punkt)

Startscript für SystemD

Um die Docker-Container dauerhaft laufen zu lassen und das sie sich nach Fehlern neu starten erstellen wir einen SystemD Dienst. Hierzu legen wir eine docker-me-team.service unter /lib/systemd/system/ an, und passen folgenden text für das Hosting an.

[Unit]
Description=Webserver fuer me-team.net
After=network.target docker.service

[Service]
Type=simple
WorkingDirectory=/srv/www/vhosts/me-team.net/docker
ExecStart=/usr/local/bin/docker-compose -f /srv/www/vhosts/me-team.net/docker/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /srv/www/vhosts/me-team.net/docker/docker-compose.yml down
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Hat man eine das Startscript angelegt, muss man dieses noch aktivieren, damit das OS den Docker-Container automatisch beim Systemstart startet. Dies geschieht über den Befehl systemctl mit Root-Rechten.

systemctl enable docker-me-team.service

Zum Deaktivieren dient der Befehl:

systemctl disable docker-me-team.service

Das Starten des Containers geschieht über systemctl mit dem Befehl:

systemctl start docker-me-team.service

Zum Beenden dient der Befehl:

systemctl stop docker-me-team.service

SSL auf Container durchschleifen

In der default vhost.conf wird automatisch "HTTPS=on" gesetzt wenn der RequestHeader "X-Forwarded-Proto" auf "https" gesetzt ist.
Um diesen Header übergeben zu können muss im Hostsystem die vhost.conf für das jeweilige hosting angepasst werden.
RequestHeader set X-Forwarded-Proto "https" muss in den SSL Teil der config eingetragen werden.
Im Docker-Container wird in Apache-Config mittels SetEnvIf X-Forwarded-Proto https HTTPS=on der Header HTTPS auf on gesetzt.
IMPORTANT: HTTPS=on wirkt nicht auf die .htaccess! D.h. eine Weiterleitung auf https muss über X-Forwarded-Proto gemacht werden: RewriteCond %{HTTP:X-Forwarded-Proto} !=https [NC]

Repositories

Autoren

docker.me-php's People

Contributors

benereuthlinger avatar nightscore avatar stiegelschmitt avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.