Welcome to the Joomla! Octoleo project, where we provide Docker images tailored for Joomla! enthusiasts and developers. These images are curated by @llewellynvdm and function as a playground for innovating and testing ideas that could eventually enhance the official Joomla-Docker images. While these images are experimental and not intended for production use, your feedback and contributions are highly valued.
To get started, ensure you have Docker Compose installed.
We recommend using Traefik for reverse proxying. Create a docker-compose.yml
file for Traefik in a directory like /home/username/Docker/traefik
.
Here's a basic Traefik configuration:
services:
traefik:
container_name: traefik
image: "traefik:latest"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --log.level=ERROR
- --certificatesresolvers.octoleoresolver.acme.httpchallenge=true
- --certificatesresolvers.octoleoresolver.acme.email=joomla@yourdomain.com
- --certificatesresolvers.octoleoresolver.acme.storage=/acme.json
- --certificatesresolvers.octoleoresolver.acme.httpchallenge.entrypoint=web
- --providers.file.directory=/conf
- --providers.file.watch=true
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/home/username/Docker/traefik/conf:/conf"
- "/home/username/Docker/traefik/acme.json:/acme.json"
labels:
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
networks:
- traefik
networks:
traefik:
external: true
name: traefik_webgateway
Deploy Traefik using:
cd /home/username/Docker/traefik
docker network create traefik_webgateway
docker-compose up -d
Choose the Joomla! Docker image version you need. Available tags include:
llewellyn/joomla:latest
llewellyn/joomla:x.x
llewellyn/joomla:x.x-phpx.x
llewellyn/joomla:x.x-phpx.x-variant
Find all tags here: Docker Hub Tags
For Joomla setup, create a docker-compose.yml
file in /home/username/Docker/websitename
.
Example Joomla setup:
services:
mariadb_websitename:
image: mariadb:latest
container_name: mariadb_websitename
restart: unless-stopped
environment:
MARIADB_USER: octoleo
MARIADB_DATABASE: octoleo
MARIADB_PASSWORD: your_password_here
MARIADB_ROOT_PASSWORD: your_root_password_here
volumes:
- '/home/username/Projects/websitename/db:/var/lib/mysql'
networks:
- traefik
joomla_websitename:
image: llewellyn/joomla:5.2
container_name: joomla_websitename
restart: unless-stopped
environment:
JOOMLA_SITE_NAME: Octoleo
JOOMLA_ADMIN_USER: Octoleo
JOOMLA_ADMIN_USERNAME: octoleo
JOOMLA_ADMIN_PASSWORD: your_password_here
JOOMLA_ADMIN_EMAIL: docker@octoleo.org
JOOMLA_DB_HOST: mariadb_websitename:3306
JOOMLA_DB_USER: octoleo
JOOMLA_DB_NAME: octoleo
JOOMLA_DB_PASSWORD: your_password_here
JOOMLA_EXTENSIONS_URLS: https://git.vdm.dev/joomla/pkg-component-builder/archive/5.x.zip
depends_on:
- mariadb_websitename
volumes:
- '/home/username/Projects/websitename/website:/var/www/html'
networks:
- traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.joomla_websitename.rule=Host(`octoleo.yourdomain.com`)"
- "traefik.http.routers.joomla_websitename.entrypoints=websecure"
- "traefik.http.services.joomla_websitename.loadbalancer.server.port=80"
- "traefik.http.routers.joomla_websitename.service=joomla_websitename"
- "traefik.http.routers.joomla_websitename.tls.certresolver=octoleoresolver"
phpmyadmin_websitename:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin_websitename
restart: unless-stopped
environment:
PMA_HOST: mariadb_websitename
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
depends_on:
- mariadb_websitename
networks:
- traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.phpmyadmin_websitename.rule=Host(`octoleo-db.yourdomain.com`)"
- "traefik.http.routers.phpmyadmin_websitename.entrypoints=websecure"
- "traefik.http.services.phpmyadmin_websitename.loadbalancer.server.port=80"
- "traefik.http.routers.phpmyadmin_websitename.service=phpmyadmin_websitename"
- "traefik.http.routers.phpmyadmin_websitename.tls.certresolver=octoleoresolver"
networks:
traefik:
external: true
name: traefik_webgateway
Deploy Joomla using:
cd /home/username/Docker/websitename
docker-compose up -d
This setup is ideal for running multiple Joomla instances on the same server. It simplifies access and configuration, especially when paired with a domain service like Cloudflare.
- Use Cloudflare to point your domain to your server.
- Organize your server with two main directories: Docker for Docker Compose files and Projects for project-related files.
Configure Traefik once, and then add as many Joomla containers as needed. Access your Joomla site through your domain, secured with SSL.
Enjoy experimenting with Joomla on Docker!
Copyright (C) 2021 Llewellyn van der Merwe. All rights reserved.
Licensed under the GNU General Public License version 2 or later; see LICENSE.txt