version: '3.5'

networks:

  traefik:
    name: traefik

  backend:
    name: backend

services:

  redis:
    image: 'bitnami/redis:latest'
    container_name: redis
    networks:
      - 'backend'
    ports:
      - '6379:6379'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    labels:
      - traefik.enable=false

  mysql:
    image: mariadb
    container_name: mysql
    networks:
      - 'backend'
    ports:
      - '3306:3306'
    volumes:
      - '~/mariadb:/var/lib/mysql'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
    labels:
      - traefik.enable=false

  mysql8:
    image: mysql:8
    container_name: mysql8
    networks:
      - 'backend'
    ports:
      - '3308:3306'
    volumes:
      - '~/mysql8:/var/lib/mysql'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
    labels:
      - traefik.enable=false

  traefik:
    image: traefik:v1.7-alpine
    container_name: traefik

    command:
      - -c /dev/null
      - --web
      - --docker
      - --logLevel=INFO
      - --debug=false
      - --defaultentrypoints=https,http
      - --entryPoints=Name:http Address::80
      - --entryPoints=Name:https Address::443 TLS

    restart: always
    networks:
      - traefik
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  portainer:
    image: portainer/portainer
    container_name: portainer
    restart: always
    networks:
      - traefik
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - '~/portainer:/data'
    labels:
      - traefik.backend=portainer
      - traefik.port=9000
      - traefik.frontend.rule=Host:portainer.localhost
      - traefik.docker.network=traefik
