OpenLiteSpeed WordPress Docker Container
Install a lightweight WordPress container with OpenLiteSpeed Edge or Stable version based on Ubuntu 22.04 Linux.
Prerequisites
Configuration
Edit the .env
file to update the demo site domain, default MySQL user, and password.
Feel free to check Docker hub Tag page if you want to update default openlitespeed and php versions.
Installation
Clone this repository or copy the files from this repository into a new folder:
git clone https://github.com/litespeedtech/ols-docker-env.git
Open a terminal, cd
to the folder in which docker compose.yml
is saved, and run:
docker compose up
Note: If you wish to run a single web server container, please see the usage method here.
Components
The docker image installs the following packages on your system:
Component | Version |
---|---|
Linux | Ubuntu 22.04 |
OpenLiteSpeed | Latest version |
MariaDB | Stable version: 10.5 |
PHP | Latest version |
LiteSpeed Cache | Latest from WordPress.org |
ACME | Latest from ACME official |
WordPress | Latest from WordPress |
phpMyAdmin | Latest from dockerhub |
Redis | Latest from dockerhub |
Data Structure
Cloned project
├── acme
├── bin
│ └── container
├── data
│ └── db
├── logs
│ ├── access.log
│ ├── error.log
│ ├── lsrestart.log
│ └── stderr.log
├── lsws
│ ├── admin-conf
│ └── conf
├── sites
│ └── localhost
├── LICENSE
├── README.md
└── docker-compose.yml
-
acme
contains all applied certificates from Lets Encrypt -
bin
contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc -
data
stores the MySQL database -
logs
contains all of the web server logs and virtual host access logs -
lsws
contains all web server configuration files -
sites
contains the document roots (the WordPress application will install here)
Usage
Starting a Container
Start the container with the up
or start
methods:
docker compose up
You can run with daemon mode, like so:
docker compose up -d
The container is now built and running.
Stopping a Container
docker compose stop
Removing Containers
To stop and remove all containers, use the down
command:
docker compose down
Setting the WebAdmin Password
We strongly recommend you set your personal password right away.
bash bin/webadmin.sh my_password
Starting a Demo Site
After running the following command, you should be able to access the WordPress installation with the configured domain. By default the domain is http://localhost.
bash bin/demosite.sh
Creating a Domain and Virtual Host
bash bin/domain.sh [-A, --add] example.com
Please ignore SSL certificate warnings from the server. They happen if you haven't applied the certificate.
Deleting a Domain and Virtual Host
bash bin/domain.sh [-D, --del] example.com
Creating a Database
You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate:
bash bin/database.sh [-D, --domain] example.com
Use this command to specify your own names, substituting user_name
, my_password
, and database_name
with your preferred values:
bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME
Installing a WordPress Site
To preconfigure the wp-config
file, run the database.sh
script for your domain, before you use the following command to install WordPress:
./bin/appinstall.sh [-A, --app] wordpress [-D, --domain] example.com
Connecting to Redis
Go to WordPress > LSCache Plugin > Cache > Object, select Redis method and input redis
to the Host field.
Install ACME
We need to run the ACME installation command the first time only. With email notification:
./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR
Applying a Let's Encrypt Certificate
Use the root domain in this command, and it will check for a certificate and automatically apply one with and without www
:
./bin/acme.sh [-D, --domain] example.com
Other parameters:
-
[
-r
,--renew
]: Renew a specific domain with -D or --domain parameter if posibile. To force renew, use -f parameter. -
[
-R
,--renew-all
]: Renew all domains if possible. To force renew, use -f parameter. -
[
-f
,-F
,--force
]: Force renew for a specific domain or all domains. -
[
-v
,--revoke
]: Revoke a domain. -
[
-V
,--remove
]: Remove a domain.
Update Web Server
To upgrade the web server to latest stable version, run the following:
bash bin/webadmin.sh [-U, --upgrade]
Apply OWASP ModSecurity
Enable OWASP mod_secure
on the web server:
bash bin/webadmin.sh [-M, --mod-secure] enable
Disable OWASP mod_secure
on the web server:
bash bin/webadmin.sh [-M, --mod-secure] disable
Please ignore ModSecurity warnings from the server. They happen if some of the rules are not supported by the server.
Accessing the Database
After installation, you can use phpMyAdmin to access the database by visiting http://127.0.0.1:8080
or https://127.0.0.1:8443
. The default username is root
, and the password is the same as the one you supplied in the .env
file.
Customization
If you want to customize the image by adding some packages, e.g. lsphp80-pspell
, just extend it with a Dockerfile.
- We can create a
custom
folder and acustom/Dockerfile
file under the main project. - Add the following example code to
Dockerfile
under the custom folder
FROM litespeedtech/openlitespeed:latest
RUN apt-get update && apt-get install lsphp80-pspell -y
- Add
build: ./custom
line under the "image: litespeedtech" of docker-composefile. So it will looks like this
litespeed:
image: litespeedtech/openlitespeed:${OLS_VERSION}-${PHP_VERSION}
build: ./custom
- Build and start it with command:
docker compose up --build
Support & Feedback
If you still have a question after using OpenLiteSpeed Docker, you have a few options.
- Join the GoLiteSpeed Slack community for real-time discussion
- Post to the OpenLiteSpeed Forums for community support
- Reporting any issue on Github ols-docker-env project
Pull requests are always welcome