version: '3.8' services: n8n-db: image: mariadb:10.7 container_name: n8n-db hostname: n8n-db restart: unless-stopped environment: - MARIADB_ROOT_PASSWORD - MARIADB_DATABASE - MARIADB_USER - MARIADB_PASSWORD - MARIADB_MYSQL_LOCALHOST_USER=true volumes: - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/n8n/database:/var/lib/mysql healthcheck: test: "/usr/bin/mysql --user=${MARIADB_USER} --password=${MARIADB_PASSWORD} --execute 'SELECT 1;'" interval: 10s timeout: 5s retries: 10 n8n: image: n8nio/n8n container_name: n8n hostname: n8n restart: unless-stopped environment: - DB_TYPE=mariadb - DB_MYSQLDB_HOST=n8n-db - DB_MYSQLDB_DATABASE=${MARIADB_DATABASE} - DB_MYSQLDB_USER=${MARIADB_USER} - DB_MYSQLDB_PASSWORD=${MARIADB_PASSWORD} ports: - 5678:5678 links: - n8n-db volumes: - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/n8n/storage:/home/node/.n8n command: n8n start --tunnel depends_on: n8n-db: condition: service_healthy #labels: # - traefik.enable=true # - traefik.http.routers.n8n.rule=Host(`n8n.example.com`) # - traefik.http.services.n8n.loadbalancer.server.port=5678 # - traefik.docker.network=proxy # # Part for optional traefik middlewares # - traefik.http.routers.n8n.middlewares=local-ipwhitelist@file,basic-auth@file