LimeSurvey

Version 1.3 by chrisby on 2023/09/11 22:02

docker-compose.yml

version: "3.3"

volumes:
 traefik:
 limesurvey-web:
 limesurvey-db:

services:
 traefik:
   image: "traefik:v2.10.4"
   container_name: "traefik"
   restart: unless-stopped
   command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
     # - "--certificatesresolvers.myresolver.acme.email=<email>"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
     # Uncomment for test mode. This allows detailed logging and creation of a fake certificate.
     # - "--log.level=DEBUG"
     # - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
   ports:
      - "443:443"
   volumes:
      - "traefik:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

 limesurvey-web:
   image: martialblog/limesurvey:6.2.4-230825-apache
   container_name: limesurvey-web
   restart: unless-stopped
   volumes:
      - limesurvey-web:/var/www/html/upload/surveys
   depends_on:
      - limesurvey-db
   environment:
      - "DB_HOST=limesurvey-db"
      - "DB_PASSWORD=<DB_USER_PASSWORD>"
      - "ADMIN_PASSWORD=<ADMIN_PASSWORD>"
   labels:
      - "traefik.enable=true"
      - "traefik.http.routers.limesurvey.rule=Host(`<subdomain>`)"
      - "traefik.http.routers.limesurvey.entrypoints=websecure"
      - "traefik.http.routers.limesurvey.tls.certresolver=myresolver"
      - "traefik.http.services.limesurvey.loadbalancer.server.port=8080"

 limesurvey-db:
   image: docker.io/mysql:5.7.43
   container_name: limesurvey-db
   restart: unless-stopped
   environment:
      - "MYSQL_USER=limesurvey"
      - "MYSQL_DATABASE=limesurvey"
      - "MYSQL_PASSWORD=<DB_USER_PASSWORD>"
      - "MYSQL_ROOT_PASSWORD=<DB_ROOT_PASSWORD>"
   volumes:
      - limesurvey-db:/var/lib/mysql
  • Execute docker-compose up -d
  • Go to https://<subdomain>/index.php/admin
  • Login as "admin" using the "<ADMIN_PASSWORD>"