WordPress over HTTPS with Docker (SSL)

ruucm
Today I Solved
Published in
3 min readNov 1, 2018

What

It was quite hard to make https my WordPress site when using Docker

Because it needed to make Nginx proxy server and connect it

How

(I've used AWS EC2 ubuntu)

  1. open 443 port at your security group

2. Install Nginx Proxy Server using this repository

mkdir nginx-proxy && cd nginx-proxygit clone https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion.git .mv .env.sample .env && vim .env

and add your information.

Here is my working example

## Set the IP address of the external access Interface
#
IP=0.0.0.0
#
# Default Network
#
NETWORK=webproxy
# If you want to customize the created network, use the following variable
#NETWORK_OPTIONS="--opt encrypted=true"
#
# Service Network (Optional)
#
# In case you decide to add a new network to your services containers you can set this
# network as a SERVICE_NETWORK
#
# [WARNING] This setting was built to use our `start.sh` script or in that special case
# you could use the docker-composer with our multiple network option, as of:
# `docker-compose -f docker-compose-multiple-networks.yml up -d`
#
#SERVICE_NETWORK=webservices
# If you want to customize the created network, use the following variable
#SERVICE_NETWORK_OPTIONS="--opt encrypted=true"
#
# NGINX file path#
NGINX_FILES_PATH=/var/nginx/data
## docker-compose-letsencrypt-nginx-proxy-companion
#
# A Web Proxy using docker with NGINX and Let's Encrypt
# Using the great community docker-gen, nginx-proxy and docker-letsencrypt-nginx-proxy-companion
#
# This is the .env file to set up your webproxy enviornment
#
# Your local containers NAME
#
NGINX_WEB=nginx-web
DOCKER_GEN=nginx-gen
LETS_ENCRYPT=nginx-letsencrypt
#
# NGINX use special conf files
#
# In case you want to add some special configuration to your NGINX Web Proxy you could
# add your files to ./conf.d/ folder as of sample file 'uploadsize.conf'
#
# [WARNING] This setting was built to use our `start.sh`.
#
# [WARNING] Once you set this options to true all your files will be copied to data
# folder (./data/conf.d). If you decide to remove this special configuration
# you must delete your files from data folder ./data/conf.d.
#
#USE_NGINX_CONF_FILES=true
#
# Docker Logging Config
#
# This section offers two options max-size and max-file, which follow the docker documentation
# as follow:
#
# logging:
# driver: "json-file"
# options:
# max-size: "200k"
# max-file: "10"
#
#NGINX_WEB_LOG_DRIVER=json-file
#NGINX_WEB_LOG_MAX_SIZE=4m
#NGINX_WEB_LOG_MAX_FILE=10
#NGINX_GEN_LOG_DRIVER=json-file
#NGINX_GEN_LOG_MAX_SIZE=2m
#NGINX_GEN_LOG_MAX_FILE=10
#NGINX_LETSENCRYPT_LOG_DRIVER=json-file
#NGINX_LETSENCRYPT_LOG_MAX_SIZE=2m
#NGINX_LETSENCRYPT_LOG_MAX_FILE=10

and start script

./start.sh

3. Install docker-wordpress-letsencrypt with this docker containers

cd .. && mkdir wordpress-letsencrypt && cd wordpress-letsencryptgit clone https://github.com/evertramos/docker-wordpress-letsencrypt.git .vim docker-compose.yml

and make your configuration of docker-compose.yml

Here is my working example

version: '3'services:
db:
container_name: ruucm-db-container
image: mariadb:latest
restart: unless-stopped
volumes:
- ${DB_PATH}:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: superstrongpw123
MYSQL_DATABASE: ruucm-db
MYSQL_USER: root
MYSQL_PASSWORD: superstrongpw123
wordpress:
depends_on:
- db
container_name: ruucm-wp-container
image: wordpress:latest
restart: unless-stopped
volumes:
- ${WP_CORE}:/var/www/html
- ${WP_CONTENT}:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: ruucm-db-container:3306
WORDPRESS_DB_NAME: ruucm-db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: superstrongpw123
WORDPRESS_TABLE_PREFIX: wp_
VIRTUAL_HOST: ruucm.work, www.ruucm.work
LETSENCRYPT_HOST: ruucm.work, www.ruucm.work
LETSENCRYPT_EMAIL: ruucm.a@gmail.com
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
external_links:
- db
ports:
- 8181:80
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: superstrongpw123
# wpcli:
# image: tatemz/wp-cli
# volumes:
# - ${WP_CORE}:/var/www/html
# - ${WP_CONTENT}:/var/www/html/wp-content
# depends_on:
# - db
# entrypoint: wp
networks:
default:
external:
name: webproxy

and edit .env file

mv .env.sample .env && vim .env# .env file to set up your wordpress site#
# Network name
#
# Your container app must use a network conencted to your webproxy
# https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion
#
NETWORK=webproxy
#
# Database Container configuration
# We recommend MySQL or MariaDB - please update docker-compose file if needed.
#
CONTAINER_DB_NAME=ruucm-db-container
# Path to store your database
DB_PATH=/var/lib/mysql
# Root password for your database
MYSQL_ROOT_PASSWORD=superstrongpw123
# Database name, user and password for your wordpress
MYSQL_DATABASE=ruucm-db
MYSQL_USER=root
MYSQL_PASSWORD=superstrongpw123
#
# Wordpress Container configuration
#
CONTAINER_WP_NAME=ruucm-wp-container
# Path to store your wordpress files
WP_CORE=/var/www/html
WP_CONTENT=/var/www/html/wp-content
# Table prefix
WORDPRESS_TABLE_PREFIX=wp_
# Your domain (or domains)
DOMAINS=ruucm.work,www.ruucm.work
# Your email for Let's Encrypt register
LETSENCRYPT_EMAIL=ruucm.a@gmail.com

4. Start your project

docker-compose up -d

That’s it!

--

--