Tutor v17.0.0 error: Error applying action: func=<function _stop_on_local_start at 0x7f041ad32fc0> contexts=[]'

During installing edx (tutor v17.0.0), I got the following error.The error occurs in any approaches below:

  • python venv or not
  • docker install, binary install, source install
  • python v. 3.8, 3.10, 3.11, 3.12
  • ubuntu 20, 22, or 23

Docker is updated following steps in docker site.

docker compose -f /home/istudiolms/.local/share/tutor/env/local/docker-compose.yml -f /home/istudiolms/.local/share/tutor/env/dev/docker-compose.yml --project-name tutor_dev stop
validating /home/istudiolms/.local/share/tutor/env/dev/docker-compose.yml: services.lms.volumes array items[0,6] must be unique
Error applying action: func=<function _stop_on_local_start at 0x7f041ad32fc0> contexts=[]'
Error: Command failed with status 15: docker compose -f /home/istudiolms/.local/share/tutor/env/local/docker-compose.yml -f /home/istudiolms/.local/share/tutor/env/dev/docker-compose.yml --project-name tutor_dev stop

In specific case with:

  • python 3.8.10 /
  • Docker version 25.0.0, build e758fe5 /
  • docker-compose version 1.27.4, build 40524192
======================================================
        Starting the platform in detached mode
======================================================
docker compose -f /home/tutor17/.local/share/tutor/env/local/docker-compose.yml -f /home/tutor17/.local/share/tutor/env/dev/docker-compose.yml --project-name tutor_dev stop
validating /home/tutor17/.local/share/tutor/env/dev/docker-compose.yml: services.cms-worker.volumes array items[0,5] must be unique
Error applying action: func=<function _stop_on_local_start at 0x7f4f9a50a670> contexts=[]'
Error: Command failed with status 15: docker compose -f /home/tutor17/.local/share/tutor/env/local/docker-compose.yml -f /home/tutor17/.local/share/tutor/env/dev/docker-compose.yml --project-name tutor_dev stop


$ cat /home/tutor17/.local/share/tutor/env/local/docker-compose.yml
version: "3.7"
services:

  # Set bind-mounted folder ownership
  permissions:
    image: docker.io/overhangio/openedx-permissions:17.0.0
    restart: on-failure
    entrypoint: []
    command: ["sh", "/usr/local/bin/setowners.sh"]
    environment:
      OPENEDX_USER_ID: "1000"
    volumes:
      # Command script
      - ../apps/permissions/setowners.sh:/usr/local/bin/setowners.sh:ro
      # Bind-mounted volumes to set ownership
      - ../../data/lms:/mounts/lms
      - ../../data/cms:/mounts/cms
      - ../../data/openedx-media:/mounts/openedx
      - ../../data/mongodb:/mounts/mongodb
      - ../../data/mysql:/mounts/mysql
      - ../../data/elasticsearch:/mounts/elasticsearch
      - ../../data/redis:/mounts/redis


  ############# External services

  mongodb:
    image: docker.io/mongo:4.4.25
    # Use WiredTiger in all environments, just like at edx.org
    command: mongod --nojournal --storageEngine wiredTiger
    restart: unless-stopped
    user: "999:999"
    volumes:
      - ../../data/mongodb:/data/db
    depends_on:
      - permissions

  mysql:
    image: docker.io/mysql:8.1.0
    command: >
      mysqld
      --character-set-server=utf8mb3
      --collation-server=utf8mb3_general_ci
      --binlog-expire-logs-seconds=259200
    restart: unless-stopped
    user: "999:999"
    volumes:
      - ../../data/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "b7F8odZY"

  elasticsearch:
    image: docker.io/elasticsearch:7.17.13
    environment:
      - cluster.name=openedx
      - bootstrap.memory_lock=true
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    restart: unless-stopped
    user: "1000:1000"
    volumes:
      - ../../data/elasticsearch:/usr/share/elasticsearch/data
    depends_on:
      - permissions

  redis:
    image: docker.io/redis:7.2.1
    working_dir: /openedx/redis/data
    user: "1000:1000"
    volumes:
      - ../apps/redis/redis.conf:/openedx/redis/config/redis.conf:ro
      - ../../data/redis:/openedx/redis/data
    command: redis-server /openedx/redis/config/redis.conf
    restart: unless-stopped
    depends_on:
      - permissions

  smtp:
    image: docker.io/devture/exim-relay:4.96-r1-0
    restart: unless-stopped
    user: "100:101"
    environment:
      HOSTNAME: "test.istudiolms.com"

  ############# LMS and CMS

  lms:
    image: docker.io/overhangio/openedx:17.0.0
    environment:
      SERVICE_VARIANT: lms
      DJANGO_SETTINGS_MODULE: lms.envs.tutor.production
      UWSGI_WORKERS: 2
    restart: unless-stopped
    volumes:
      - ../apps/openedx/settings/lms:/openedx/edx-platform/lms/envs/tutor:ro
      - ../apps/openedx/settings/cms:/openedx/edx-platform/cms/envs/tutor:ro
      - ../apps/openedx/config:/openedx/config:ro
      - ../apps/openedx/uwsgi.ini:/openedx/edx-platform/uwsgi.ini:ro
      - ../../data/lms:/openedx/data
      - ../../data/openedx-media:/openedx/media
    depends_on:
      - permissions
      - mysql
      - elasticsearch
      - mongodb
      - redis
      - smtp


  cms:
    image: docker.io/overhangio/openedx:17.0.0
    environment:
      SERVICE_VARIANT: cms
      DJANGO_SETTINGS_MODULE: cms.envs.tutor.production
      UWSGI_WORKERS: 2
    restart: unless-stopped
    volumes:
      - ../apps/openedx/settings/lms:/openedx/edx-platform/lms/envs/tutor:ro
      - ../apps/openedx/settings/cms:/openedx/edx-platform/cms/envs/tutor:ro
      - ../apps/openedx/config:/openedx/config:ro
      - ../apps/openedx/uwsgi.ini:/openedx/edx-platform/uwsgi.ini:ro
      - ../../data/cms:/openedx/data
      - ../../data/openedx-media:/openedx/media
    depends_on:
      - permissions
      - lms
      - mysql
      - elasticsearch
      - mongodb
      - redis
      - smtp


  ############# LMS and CMS workers

  lms-worker:
    image: docker.io/overhangio/openedx:17.0.0
    environment:
      SERVICE_VARIANT: lms
      DJANGO_SETTINGS_MODULE: lms.envs.tutor.production
    command: celery --app=lms.celery worker --loglevel=info --hostname=edx.lms.core.default.%%h --max-tasks-per-child=100 --exclude-queues=edx.cms.core.default
    restart: unless-stopped
    volumes:
      - ../apps/openedx/settings/lms:/openedx/edx-platform/lms/envs/tutor:ro
      - ../apps/openedx/settings/cms:/openedx/edx-platform/cms/envs/tutor:ro
      - ../apps/openedx/config:/openedx/config:ro
      - ../../data/lms:/openedx/data
      - ../../data/openedx-media:/openedx/media
    depends_on:
      - lms

  cms-worker:
    image: docker.io/overhangio/openedx:17.0.0
    environment:
      SERVICE_VARIANT: cms
      DJANGO_SETTINGS_MODULE: cms.envs.tutor.production
    command: celery --app=cms.celery worker --loglevel=info --hostname=edx.cms.core.default.%%h --max-tasks-per-child 100 --exclude-queues=edx.lms.core.default
    restart: unless-stopped
    volumes:
      - ../apps/openedx/settings/lms:/openedx/edx-platform/lms/envs/tutor:ro
      - ../apps/openedx/settings/cms:/openedx/edx-platform/cms/envs/tutor:ro
      - ../apps/openedx/config:/openedx/config:ro
      - ../../data/cms:/openedx/data
      - ../../data/openedx-media:/openedx/media
    depends_on:
      - cms

  # MFE
  mfe:
      image: docker.io/overhangio/openedx-mfe:17.0.0
      restart: unless-stopped
      volumes:
          - ../plugins/mfe/apps/mfe/Caddyfile:/etc/caddy/Caddyfile:ro
      depends_on:
          - lms

Hi @humble92 , did you notice this error above the “Error applying action” line? it looks related to this issue: docker compose validations fail with docker-compose-plugin > 2.21 · Issue #992 · overhangio/tutor · GitHub

That issue recommends downgrading your docker-compose plugin to work around the issue until we get a proper fix in.

Does that help?

Hi, a similar thread is also taking place on Launching tutor locally. More or less, the issue is with Docker’s new version compatibility.

fix: Fix tutor when using docker compose 2.24.1 by xitij2000 · Pull Request #994 · overhangio/tutor · GitHub has merged and should fix this issue.

@humble92 @Syed_Muhammad_Dawoud can you confirm that running off the latest Tutor master works for you now?