PrestaShop¶
This guide will explain how to install a PrestaShop Docker container with LiteSpeed Web Server (LSWS) Enterprise, based on Ubuntu 24.04 Linux.
Prerequisites¶
Configuration¶
Edit the .env file to update the demo site domain, default MySQL user, and password. Take a look at the Docker hub Tag page to update default LSWS and PHP versions.
Installation¶
Clone this repository, or copy the files from it into a new folder:
git clone https://github.com/litespeedtech/lsws-prestashop-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 container that simply has LiteSpeed Web Server alone (no PrestaShop), please see the usage method here.
Components¶
The Docker image installs the following packages on your system:
| Component | Version |
|---|---|
| Linux | Ubuntu 24.04 |
| LiteSpeed Web Server | Latest stable version |
| MariaDB | Stable version: 10.5 |
| PHP | Latest PrestaShop-supported version |
| ACME | Latest from ACME official |
| PrestaShop | 8.1.7 |
| LSCache Module for PrestaShop | Latest |
| phpMyAdmin | Latest from Docker Hub |
Data Structure¶
This is the structure of the 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
acmecontains all applied certificates from Lets Encryptbincontains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc.datastores the MySQL databaselogscontains all of the web server logs and virtual host access logslswscontains all web server configuration filessitescontains the document roots (the PrestaShop application will install here)
Usage¶
Starting a Container¶
Start the container with the up or start methods:
docker compose up
docker compose up -d
Note
The container will auto-apply a 15-day trial license. Please contact LiteSpeed to extend the trial, or apply an existing license. New licenses start at $0.
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 WedAdmin Console 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 PrestaShop installation with the configured domain. By default the domain is http://localhost.
bash bin/demosite.sh -P
Creating a Domain and Virtual Host¶
bash bin/domain.sh [-A, --add] example.com
Tip
You can ignore SSL certificate warnings from the server. These occur if you haven't applied the certificate yet.
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 you can specify your own values. Use the following to auto generate:
bash bin/database.sh [-D, --domain] example.com
USER_NAME, MY_PASS, 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 PrestaShop Site¶
To preconfigure PrestaShop, run the database.sh script for your domain
Then, you can use the following command to install PrestaShop:
./bin/appinstall.sh [-A, --app] prestashop [-D, --domain] example.com
Enable PrestaShop LSCache Module¶
The LSCache module is installed and is enabled by default. If you find it is not enabled, you may do so in LiteSpeed Cache > Settings. Set Enable LiteSpeed Cache to Yes.
Installing ACME¶
You 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-Dor--domainparameter if possible. To force renew, use-fparameter. - [
-R,--renew-all]: Renew all domains if possible. To force renew, use-fparameter. - [
-f,-F,--force]: Force renew for a specific domain or all domains. - [
-v,--revoke]: Revoke a domain. - [
-V,--remove]: Remove a domain.
Updating Web Server¶
To upgrade the web server to the latest stable version, run the following:
bash bin/webadmin.sh [-U, --upgrade]
Applying OWASP ModSecurity¶
Enable OWASP mod_secure on the web server:
bash bin/webadmin.sh [-M, --mod-secure] enable
mod_secure on the web server: bash bin/webadmin.sh [-M, --mod-secure] disable
Tip
You can ignore ModSecurity warnings from the server. These occur if some of the rules are not supported by the server.
Applying a License to LSWS¶
Apply your license with command:
bash bin/webadmin.sh [-S, --serial] YOUR_SERIAL
bash bin/webadmin.sh [-S, --serial] TRIAL
Accessing the Database¶
After installation, you can use phpMinAdmin 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. lsphp83-pspell, just extend it with a Dockerfile. 1. Create a custom folder and a custom/Dockerfile file under the main project. 2. Add the following example code to custom/Dockerfile:
FROM litespeedtech/litespeed:latest
RUN apt update && apt install lsphp83-pspell
build: ./custom directly under image: litespeedtech in docker-composefile, like so: litespeed:
image: litespeedtech/litespeed:${LSWS_VERSION}-${PHP_VERSION}
build: ./custom
docker compose up --build
FAQ¶
How do I Configure MTU with Docker?¶
A common problem when operating dockers within a virtualization infrastructure is that the network cards provided to virtual machines do not have the default MTU of 1500. If the outgoing interface has an MTU smaller than 1500, please consider applying the following rules to docker-compose.yml. This will avoid the package getting trimmed.
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1400
Be sure to substitute the MTU number 1400 with your own docker outgoing interface MTU size.
How do I Add a Bind Mount for php.ini?¶
Note
We are using lsphp83 in this example, but you can replace that with your own preferred PHP version.
Move or copy php.ini out of the LiteSpeed folder by running the following command from the host:
docker-compose exec litespeed su -c 'mv /usr/local/lsws/lsphp83/etc/php/8.3/litespeed/php.ini /usr/local/lsws/conf'
Edit docker-compose.yml and add the php.ini bind mount by inserting this line under litespeed > volumes:
- ./lsphp83:/usr/local/lsws/lsphp80/etc/php/8.3/litespeed
The updated section should look like this:
litespeed:
image: litespeedtech/openlitespeed:${OLS_VERSION}-${PHP_VERSION}
env_file:
- .env
volumes:
- ./lsws/conf:/usr/local/lsws/conf
- ./lsphp83:/usr/local/lsws/lsphp83/etc/php/8.3/litespeed
Move or copy php.ini back to its original location:
docker-compose exec litespeed su -c 'mv /usr/local/lsws/conf/php.ini /usr/local/lsws/lsphp83/etc/php/8.3/litespeed/php.ini'
Change the host directory permission:
sudo chown -R root:root lsphp83
Is Podman Compatible With the Solution?¶
Yes, overall Podman and Docker are compatible with each other.
Once you have the podman-docker and the podman-compose packages installed, start the Podman systemd socket-activated service using the following command:
systemctl start podman.socket
You can now use Podman with Compose.