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 :
localhost
domain for let's encrypt - EMAIL :
admin@localhost
email for let's encrypt - TZ :
Europe/Paris
timezone - SHFILE :
/etc/apache2/file.sh
additionnal script for cron or other - PAGESPEED :
false
install google pagespeed module apache - LIBMOD :
re2c
additionnal dependencies - APAMOD :
cache,rewrite,ssl,headers
apache2 modules - ADPMOD :
autoindex
apache2 disable modules - PHPMOD :
bcmath,bz2,intl,gd,mbstring,mysql,zip
php modules - PEAMOD :
xdiff
pear 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 :)