Official docker wordpress container with SSL in Windows 10/11
https://hub.docker.com/_/wordpress
docker-compose.yml
version: '3.9'
services:
wordpress:
image: wordpress:latest
restart: always
ports:
- 443:443
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: password
volumes:
- ./wordpress:/var/www/html
db:
image: mysql:latest
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: password
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
Create your docker-compose file and run docker-compose up -d
Once the container is running, copy these 2 important files
- docker-entrypoint.sh
c:\ docker cp wordpress_wordpress_1:/usr/local/bin/docker-entrypoint.sh .
- default-ssl.conf
c:\ docker cp wordpress_wordpress_1:/etc/apache2/sites-available/default-ssl.conf .
After copying the files, shutdown the container
docker-compose down
and update wordpress volumes in your docker-compose.yml file
volumes:
- ./wordpress:/var/www/html
- ./certs:/etc/ssl/certs:ro
- ./default-ssl.conf:/etc/apache2/sites-available/default-ssl.conf:ro
- ./docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh:ro
./certs
- this is where your certificate will reside
./default-ssl.conf
- this is where the 443 configuration
./docker-entrypoint
- this run first before the web server starts
follow the instruction on how to install mkcert on your host machine (windows) https://github.com/FiloSottile/mkcert
Run the command to create self-signed certificate, follow through
c:\ mkcert -install custom.domain.local
move the files created by mkcert in ./certs
- custom.domain.local.pem
- custom.domain.local-key.pem
Check the certificate in windows (located in MMC Certificate / current user)
- run mmc
- File -> Add/Remove Snap in
- Choose certificate -> add -> press Ok
- Select
My user account
-> finish
Under the Trusted Root Certification Authorities -> Certificates, locate the certificates created by mkcert
you should find it there ...
Modify the file C:\Windows\System32\drivers\etc\hosts
add this at the bottom 127.0.0.1 custom.domain.local
change the last line of docker-entrypoint.sh
, exec "$@"
a2enmod ssl
a2ensite default-ssl
service apache2 restart
service apache2 stop
exec "$@"
modify the default-ssl.conf
ServerName custom.domain.local
SSLCertificateFile /etc/ssl/certs/custom.domain.local.pem
SSLCertificateKeyFile /etc/ssl/certs/custom.domain.local-key.pem
run the container
docker-compose up -d
visit your wordpress site at https://custom.domain.local
You now have SSL enable wordpress site. Enjoy!
A simple setup for self-hosted WordPress on Docker with SSL https://hackmd.io/@linnil1/H1p25uxFU
How to create Self-signed SSL Certificates in Windows 11/10 https://www.thewindowsclub.com/create-self-signed-ssl-certificates-in-windows-10