Docker image with php, pear, xdiff, pagespeed, apache and certbot. Based on ubuntu:focal (Old version based on ubuntu:bionic is available on build monkeycompany/php-apache-certbot:e26af93)
Docker hub : monkeycompany/php-apache-certbot
Framagit project : monkey-company/php-apache-certbot
Github project : monkey-company/php-apache-certbot
- DOMAIN :
localhostdomain for let's encrypt - EMAIL :
admin@localhostemail for let's encrypt - TZ :
Europe/Paristimezone - SHFILE :
/etc/apache2/file.shadditionnal script for cron or other - PAGESPEED :
falseinstall google pagespeed module apache - LIBMOD :
re2cadditionnal dependencies - APAMOD :
cache,rewrite,ssl,headersapache2 modules - ADPMOD :
autoindexapache2 disable modules - PHPMOD :
bcmath,bz2,intl,gd,mbstring,mysql,zipphp modules - PEAMOD :
xdiffpear packages
- Let's encrypt configuration :
/etc/letsencrypt/ - Apache configuration :
/etc/apache2/ - PHP configuration :
/etc/php/ - Apache webroot :
/var/www/html/
- HTTP :
80 - HTTPS :
443
Run the docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v ${PWD}/path/letsencrypt-conf/:/etc/letsencrypt/ -v ${PWD}/path/apache-conf/:/etc/apache2/ -v ${PWD}/path/php-conf/:/etc/apache2/ -v ${PWD}/path/www/:/var/www/html/ -e DOMAINS='example.com' -e EMAIL='[email protected]' monkeycompany/php-apache-certbot command.
Create a docker-compose.yml file or import yaml in Rancher.
php-apache-certbot:
image: monkeycompany/php-apache-certbot
ports:
- '80:80'
- '443:443'
environment:
DOMAINS: 'example.com'
EMAIL: '[email protected]'
PAGESPEED: 'true'
LIBMOD: 're2c'
APAMOD: 'cache,rewrite,ssl,headers'
APDMOD: 'autoindex'
PHPMOD: 'bcmath,bz2,intl,gd,mbstring,mysql,zip'
PEAMOD: 'xdiff'
volumes:
- ${PWD}/path/letsencrypt-conf/:/etc/letsencrypt/
- ${PWD}/path/apache-conf/:/etc/apache2/
- ${PWD}/path/php-conf/:/etc/apache2/
- ${PWD}/path/www/:/var/www/html/Run the docker-compose up command in the same directory.
Run the certbot --apache --non-interactive --agree-tos --email $EMAIL --domains $DOMAINS certonly command in the container.
If you use Kubernetes or Rancher, regenerate all the containers to apply the configurations in volumes.
If you need cron or additionnal commands, use the variable SHFILE for define a path and make script file :)