Recently, I need to quickly set up Matomo to track visits on my website. This is the blueprint you can use to quickly get Matomo up and running with docker-compose.
The YAML file
The YAML file contains two services. One is for Matomo itself. The other is the database. Here, I select MariaDB to run as the app’s database.
Both refer to an environment file containing environment variables for both services.
version: "3" services: matomo_db: image: mariadb:10.6 container_name: matomo_db command: --max-allowed-packet=64MB restart: always volumes: - /app/data/matomo/db:/var/lib/mysql env_file: - ./matomo.env matomo_app: image: matomo:4.5.0-apache container_name: matomo_app restart: always depends_on: - matomo_db volumes: - /app/data/matomo/web:/var/www/html env_file: - ./matomo.env ports: - 127.0.0.1:28080:80
Make sure to map the volume to both MariaDB and Matomo or you will lose your data, which is undesirable.
As mentioned above, this is the environment file for both Matomo and MariaDB.
MYSQL_ROOT_PASSWORD=npL4VEBERKGgirs44 MYSQL_DATABASE=matomo_tracking MATOMO_DATABASE_HOST=matomo_db MATOMO_DATABASE_USERNAME=root MATOMO_DATABASE_PASSWORD=npL4VEBERKGgirs44 MATOMO_DATABASE_DBNAME=matomo_tracking
Mapping to website
You can use either Nginx or HAproxy to setup domain and forward traffic to the correct port. With Matomo, you don’t need to have domain configuration. You only need to forward the traffic (using Nginx, HAProxy) to the right port.