Back to Blog

Moodle Docker Compose File

A docker compose file for self hosting moodle

version: '3'

networks:
  web:
    external: true
  moodle:
    
services:
  mariadb:
    container_name: mariadb
    hostname: mariadb
    image: bitnami/mariadb:latest
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=bn_moodle
      - MARIADB_DATABASE=bitnami_moodle
      - MARIADB_PASSWORD=bitnami
    volumes:
      - /home/moodle/mariadb_data:/bitnami/mariadb
    networks:
      - moodle
      
  moodle:
    image: bitnami/moodle:4.4.0
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MOODLE_DATABASE_HOST=mariadb
      - MOODLE_DATABASE_PORT_NUMBER=3306
      - MOODLE_DATABASE_USER=bn_moodle
      - MOODLE_DATABASE_PASSWORD=bitnami
      - MOODLE_DATABASE_NAME=bitnami_moodle
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.moodle.rule=Host(`example.com`)"
      - "traefik.http.services.moodle.loadbalancer.server.port=8080"
      - "traefik.http.routers.moodle.entrypoints=web,websecure"
      - "traefik.http.routers.moodle.tls.certresolver=certificateresolver"
      - "traefik.http.routers.moodle.service=moodle"
    volumes:
      - /home/moodle/moodle_data:/bitnami/moodle
      - /home/moodle/moodledata_data:/bitnami/moodledata
    depends_on:
      - mariadb
    networks:
      - web
      - moodle
      
  vpl:
    image: trampgeek/jobeinabox:latest
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vpl.rule=Host(`vpl.example.com`)"
      - "traefik.http.services.vpl.loadbalancer.server.port=80"
      - "traefik.http.routers.vpl.entrypoints=web,websecure"
      - "traefik.http.routers.vpl.tls.certresolver=certificateresolver"
      - "traefik.http.routers.vpl.service=vpl"
    networks:
      - web