Skip to content

Apache2 + PHP 7.4 + MariaDB 10.3 Client Docker Image for AARCH64, ARMv7l, X86 and X64

Notifications You must be signed in to change notification settings

tsitle/dockerimage-ws-apache_php74_mariadb103

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Apache2 + PHP 7.4 + MariaDB 10.3 Client Docker Image for AARCH64, ARMv7l, X86 and X64

For hosting PHP powered websites.

Inheritance and added packages

PHP Packages included

  • bcmath
  • cli
  • common
  • curl
  • fpm
  • gd
  • gmp
  • imagick (only on X64)
  • imap
  • json
  • ldap
  • mbstring
  • mcrypt
  • mysql
  • opcache
  • readline
  • redis (only on X64)
  • sqlite3
  • xdebug (only on X64)
  • xml
  • zip

Webserver TCP Port

The webserver is listening only on TCP port 80 by default.

Docker Container usage

See the related GitHub repository https://github.com/tsitle/dockercontainer-ws-apache_php74_mariadb103

Docker Container configuration

From tsle/ws-apache-base:

  • CF_PROJ_PRIMARY_FQDN [string]: FQDN for website (e.g. "mywebsite.localhost") (default: empty)
  • CF_SET_OWNER_AND_PERMS_WEBROOT [bool]: Recursively chown and chmod CF_WEBROOT? (default: false)
  • CF_WWWDATA_USER_ID [int]: User-ID for www-data (default: 33)
  • CF_WWWDATA_GROUP_ID [int]: Group-ID for www-data (default: 33)
  • CF_ENABLE_CRON [bool]: Enable cron service? (default: false)
  • CF_LANG [string]: Language to use (en_EN.UTF-8 or de_DE.UTF-8) (default: empty)
  • CF_TIMEZONE [string]: Timezone (e.g. 'Europe/Berlin') (default: empty)
  • CF_ENABLE_HTTP [bool]: Enable HTTP for Apache? (default: true)
  • CF_CREATE_DEFAULT_HTTP_SITE [bool]: Create default HTTP Virtual Host for Apache? (default: true)
  • CF_ENABLE_HTTPS [bool]: Enable HTTPS/SSL for Apache? (default: false)
  • CF_CREATE_DEFAULT_HTTPS_SITE [bool]: Create default HTTPS/SSL Virtual Host for Apache? (default: true)
  • CF_SSLCERT_GROUP_ID [int]: Group-ID for ssl-cert (default: 102)
  • CF_DEBUG_SSLGEN_SCRIPT [bool]: Enable debug out for sslgen.sh?
  • CF_CSR_SUBJECT_COUNTRY [string]: For auto-generated SSL Certificates (default: DE)
  • CF_CSR_SUBJECT_STATE [string]: For auto-generated SSL Certificates (default: SAX)
  • CF_CSR_SUBJECT_LOCATION [string]: For auto-generated SSL Certificates (default: LE)
  • CF_CSR_SUBJECT_ORGANIZ [string]: For auto-generated SSL Certificates (default: The IT Company)
  • CF_CSR_SUBJECT_ORGUNIT [string]: For auto-generated SSL Certificates (default: IT)
  • CF_APACHE_TIMEOUT [int]: Number of seconds before receives and sends time out (default: 300)

From this image:

  • CF_WWWFPM_USER_ID [int]: User-ID for wwwphpfpm (default: 1000)
  • CF_WWWFPM_GROUP_ID [int]: Group-ID for wwwphpfpm (default: 1000)
  • CF_PHPFPM_RUN_AS_WWWDATA [bool]: Run PHP-FPM process as user/group www-data ? (default: false)
  • CF_PHPFPM_ENABLE_OPEN_BASEDIR [bool]: (default: false)
  • CF_PHPFPM_UPLOAD_TMP_DIR [string]: (default: "/var/www/upload_tmp_dir")
  • CF_PHPFPM_PM_MAX_CHILDREN [int]: (default: 5)
  • CF_PHPFPM_PM_START_SERVERS [int]: (default: 2)
  • CF_PHPFPM_PM_MIN_SPARE_SERVERS [int]: (default: 1)
  • CF_PHPFPM_PM_MAX_SPARE_SERVERS [int]: (default: 3)
  • CF_PHPFPM_UPLOAD_MAX_FILESIZE [sizestring]: (default: "100M")
  • CF_PHPFPM_POST_MAX_SIZE [sizestring]: (default: "100M")
  • CF_PHPFPM_MEMORY_LIMIT [sizestring]: (default: "512M")
  • CF_PHPFPM_MAX_EXECUTION_TIME [int]: (default: 600)
  • CF_PHPFPM_MAX_INPUT_TIME [int]: (default: 600)
  • CF_PHPFPM_HTML_ERRORS [bool]: (default: false)

Only on X64:

  • CF_ENABLE_XDEBUG [bool]: Enable XDebug PHP module? (default: false)
  • CF_XDEBUG_REMOTE_HOST [string]: Remote Host for XDebug (default 'dockerhost')

Using cron

You'll need to create the crontab file ./mpcron/wwwphpfpm and then add some task to the file:

# the following command will be executed as 'wwwphpfpm'
* *    *   *   *     cd /var/www/html/; tar cf backup.tar site-html/> /dev/null 2>&1

Instead of the username wwwphpfpm you could also use root.

Now you could enable cron in your docker-compose.yaml file like this:

version: '3.5'
services:
  apache:
    image: "ws-apache-php74-mariadb103-<ARCH>:<VERSION>"
    ports:
      - "80:80"
    volumes:
      - "$PWD/mpweb:/var/www/html"
      - "$PWD/mpcron/wwwphpfpm:/var/spool/cron/crontabs/wwwphpfpm"
    environment:
      - CF_PROJ_PRIMARY_FQDN=example-host.localhost
      - CF_WWWFPM_USER_ID=<YOUR_UID>
      - CF_WWWFPM_GROUP_ID=<YOUR_GID>
      - CF_SET_OWNER_AND_PERMS_WEBROOT=false
      - CF_ENABLE_CRON=true
      - CF_LANG=de_DE.UTF-8
      - CF_TIMEZONE=Europe/Berlin
    restart: unless-stopped
    stdin_open: false
    tty: false

Enabling/Disabling the PHP Module XDebug in a running container (only on X64)

# enable:
$ docker exec -it DOCKERCONTAINER phpenmod xdebug
# disable:
$ docker exec -it DOCKERCONTAINER phpdismod xdebug
$ docker exec -it DOCKERCONTAINER service php7.4-fpm restart