Loomio

Loomio is a collaborative decision-making tool that makes it easy for anyone to participate in decisions which affect them.

Directory Structure

    • .env
    • docker-compose.yml

docker-compose.yml

version: '3'
 
services:
  nginx-proxy:
    image: nginxproxy/nginx-proxy:alpine
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
    networks:
      - main
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/custom.conf:ro
      - certs:/etc/nginx/certs
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: unless-stopped
 
  nginx-proxy-acme:
    image: nginxproxy/acme-companion
    networks:
      - main
    depends_on:
      - nginx-proxy
    volumes:
      - certs:/etc/nginx/certs
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - acme:/etc/acme.sh
    restart: unless-stopped
 
  app:
    container_name: loomio-app
    image: ${LOOMIO_CONTAINER_IMAGE}:${LOOMIO_CONTAINER_TAG}
    restart: unless-stopped
    healthcheck:
      test: ['CMD-SHELL', 'curl --fail http://localhost:3000/ || exit 1']
    expose:
      - 3000
    env_file: ./.env
    environment:
      - VIRTUAL_HOST=${CANONICAL_HOST}
      - LETSENCRYPT_HOST=${CANONICAL_HOST}
    volumes:
      - ./uploads:/loomio/public/system
      - ./storage:/loomio/storage
      - ./files:/loomio/public/files
      - ./plugins:/loomio/plugins/docker
      - ./import:/import
      - ./tmp:/loomio/tmp
    networks:
      - main
    depends_on:
      - db
      - redis
 
  worker:
    container_name: loomio-worker
    image: ${LOOMIO_CONTAINER_IMAGE}:${LOOMIO_CONTAINER_TAG}
    restart: always
    networks:
      - main
    env_file: ./.env
    environment:
      - TASK=worker
    volumes:
      - ./uploads:/loomio/public/system
      - ./storage:/loomio/storage
      - ./files:/loomio/public/files
      - ./plugins:/loomio/plugins/docker
      - ./tmp:/loomio/tmp
 
  db:
    container_name: loomio-db
    image: postgres:${POSTGRES_CONTAINER_TAG}
    restart: unless-stopped
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres']
    networks:
      - main
    env_file: ./.env
    volumes:
      - ./pgdata:/pgdata
      - ./pgdumps:/pgdumps
    environment:
     - PGDATA=/pgdata
 
  redis:
    container_name: loomio-redis
    image: redis:5.0
    restart: unless-stopped
    healthcheck:
      test: ['CMD', 'redis-cli', 'ping']
    networks:
      - main
 
  mailin:
    container_name: loomio-mailin
    image: ${MAILIN_CONTAINER_IMAGE}:${MAILIN_CONTAINER_TAG}
    restart: unless-stopped
    networks:
      - main
    ports:
      - "25:25"
    environment:
      - WEBHOOK_URL=http://app:3000/email_processor/
 
  channels:
    container_name: loomio-channels
    image: loomio/loomio_channel_server
    restart: unless-stopped
    networks:
      - main
    env_file: ./.env
    depends_on:
      - redis
    environment:
      - VIRTUAL_HOST=channels.${CANONICAL_HOST}
      - LETSENCRYPT_HOST=channels.${CANONICAL_HOST}
 
  hocuspocus:
    container_name: loomio-hocuspocus
    image: loomio/loomio_channel_server
    restart: unless-stopped
    networks:
      - main
    env_file: ./.env
    environment:
      - APP_URL=http://app:3000
      - VIRTUAL_HOST=hocuspocus.${CANONICAL_HOST}
      - LETSENCRYPT_HOST=hocuspocus.${CANONICAL_HOST}
    command: npm run hocuspocus
 
  pgbackups:
    image: prodrigestivill/postgres-backup-local
    restart: always
    user: postgres:postgres
    networks:
      - main
    volumes:
      - ./pgdumps:/backups
    links:
      - db
    depends_on:
      - db
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_DB=loomio_production
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
      - POSTGRES_EXTRA_OPTS=-Z6 --schema=public --blobs
      - SCHEDULE=@daily
      - BACKUP_KEEP_DAYS=7
      - BACKUP_KEEP_WEEKS=1
      - BACKUP_KEEP_MONTHS=1
      - HEALTHCHECK_PORT=8080
networks:
  main:
 
volumes:
  certs:
  vhost:
  html:
  acme:

Resources

Website: https://www.loomio.com/

GitHub: https://github.com/loomio/loomio

Docker Hub: https://hub.docker.com/r/loomio/loomio

Configuration: https://github.com/loomio/loomio-deploy