Skip to content

octoleo/docker-joomla

 
 

Repository files navigation

Joomla! Octoleo Docker Image

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.

Docker Pulls

Joomla Logo

Quick Start

To get started, ensure you have Docker Compose installed.

Setting Up Traefik as a Reverse Proxy

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

Deploying Joomla

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

Usage Scenarios

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!

License

Copyright (C) 2021 Llewellyn van der Merwe. All rights reserved.
Licensed under the GNU General Public License version 2 or later; see LICENSE.txt

Languages

  • Shell 64.9%
  • Dockerfile 25.0%
  • PHP 10.1%