version: "3" services: ############# External services memcached: image: memcached:1.4.38 mongodb: # Use WiredTiger in all environments, just like at edx.org command: mongod --smallfiles --nojournal --storageEngine wiredTiger image: mongo:3.0.14 volumes: - ./data/mongodb:/data/db mysql: image: mysql:5.6.36 command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci volumes: - ./data/mysql:/var/lib/mysql - ./mysql/config/:/etc/mysql/conf.d/openedx environment: # Load values from files generated by configurator MYSQL_DATABASE_FILE: /etc/mysql/conf.d/openedx/database MYSQL_USER_FILE: /etc/mysql/conf.d/openedx/username MYSQL_PASSWORD_FILE: /etc/mysql/conf.d/openedx/password MYSQL_ROOT_PASSWORD_FILE: /etc/mysql/conf.d/openedx/password nginx: build: context: ./nginx restart: on-failure ports: - "80:80" volumes: - ./data/lms:/openedx/data/lms:ro - ./data/cms:/openedx/data/cms:ro depends_on: - lms rabbitmq: image: rabbitmq:3.6.10 volumes: - ./data/rabbitmq:/var/lib/rabbitmq # Simple SMTP server smtp: image: namshi/smtp ############# LMS and CMS lms: build: context: ./edxapp args: service_variant: lms restart: on-failure volumes: - ./data/lms:/openedx/data depends_on: - memcached - mongodb - mysql - rabbitmq - smtp cms: build: context: ./edxapp args: service_variant: cms restart: on-failure volumes: - ./data/cms:/openedx/data depends_on: - lms ############# LMS and CMS workers # We could probably create one service per queue here. For small instances, it is not necessary. lms_worker: build: context: ./edxapp args: service_variant: lms command: ./manage.py lms --settings=production celery worker --loglevel=info --hostname=edx.lms.core.default.%%h --maxtasksperchild 100 environment: C_FORCE_ROOT: "1" # run celery tasks as root #nofear restart: on-failure volumes: - ./data/lms_worker:/openedx/data depends_on: - lms cms_worker: build: context: ./edxapp args: service_variant: cms command: ./manage.py cms --settings=production celery worker --loglevel=info --hostname=edx.cms.core.default.%%h --maxtasksperchild 100 environment: C_FORCE_ROOT: "1" # run celery tasks as root #nofear restart: on-failure volumes: - ./data/cms_worker:/openedx/data depends_on: - cms