6
0
mirror of https://github.com/ChristianLight/tutor.git synced 2024-11-05 21:07:50 +00:00
tutor/docker-compose.yml
Régis Behmo 43a97e5fe3 Add xqueue services
Xqueue containers consist of two services: a gunicorn service, that
receives requests from LMS/CMS, and a worker service. I guess the worker
service receives orders from the gunicorn service, through rabbitmq.
(but I'm less than certain about that).

While adding xqueue containers, we refactored the way mysql databases
are created, and how the root password is loaded. Also, we silenced some
options from the configure script.
2018-06-04 23:41:22 -04:00

172 lines
4.0 KiB
YAML

version: "3"
services:
############# External services
memcached:
image: memcached:1.4.38
restart: unless-stopped
mongodb:
image: mongo:3.0.14
# Use WiredTiger in all environments, just like at edx.org
command: mongod --smallfiles --nojournal --storageEngine wiredTiger
restart: unless-stopped
volumes:
- ./data/mongodb:/data/db
mysql:
image: mysql:5.6.36
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
restart: unless-stopped
volumes:
- ./data/mysql:/var/lib/mysql
env_file: ./config/mysql/auth.env
elasticsearch:
image: elasticsearch:1.5.2
environment:
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- "cluster.name=openedx"
- "bootstrap.memory_lock=true"
ulimits:
memlock:
soft: -1
hard: -1
restart: "unless-stopped"
volumes:
- ./data/elasticsearch:/usr/share/elasticsearch/data
nginx:
image: nginx:1.13
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./config/nginx:/etc/nginx/conf.d/
- ./data/lms:/openedx/data/lms:ro
- ./data/cms:/openedx/data/cms:ro
rabbitmq:
image: rabbitmq:3.6.10
volumes:
- ./data/rabbitmq:/var/lib/rabbitmq
# Simple SMTP server
smtp:
image: namshi/smtp
restart: unless-stopped
############# Forum
forum:
image: regis/openedx-forum:ginkgo
build:
context: ./forum
environment:
API_KEY: "forumapikey"
SEARCH_SERVER: "http://elasticsearch:9200"
MONGOHQ_URL: "mongodb://mongodb/cs_comments_service"
restart: unless-stopped
depends_on:
- elasticsearch
- mongodb
############# LMS and CMS
lms:
image: regis/openedx:ginkgo
build:
context: ./openedx
environment:
SERVICE_VARIANT: lms
restart: unless-stopped
volumes:
- ./config/openedx:/openedx/config
- ./data/lms:/openedx/data
depends_on:
- elasticsearch
- forum
- memcached
- mongodb
- mysql
- rabbitmq
- smtp
cms:
image: regis/openedx:ginkgo
build:
context: ./openedx
environment:
SERVICE_VARIANT: cms
restart: unless-stopped
volumes:
- ./config/openedx:/openedx/config
- ./data/cms:/openedx/data
depends_on:
- memcached
- mongodb
- mysql
- rabbitmq
- smtp
############# LMS and CMS workers
# We could probably create one service per queue here. For small instances, it is not necessary.
lms_worker:
image: regis/openedx:ginkgo
build:
context: ./openedx
environment:
SERVICE_VARIANT: lms
command: ./manage.py lms celery worker --loglevel=info --hostname=edx.lms.core.default.%%h --maxtasksperchild 100
restart: unless-stopped
environment:
C_FORCE_ROOT: "1" # run celery tasks as root #nofear
volumes:
- ./config/openedx:/openedx/config
- ./data/lms_worker:/openedx/data
depends_on:
- lms
cms_worker:
image: regis/openedx:ginkgo
build:
context: ./openedx
environment:
SERVICE_VARIANT: cms
command: ./manage.py cms celery worker --loglevel=info --hostname=edx.cms.core.default.%%h --maxtasksperchild 100
restart: unless-stopped
environment:
C_FORCE_ROOT: "1" # run celery tasks as root #nofear
volumes:
- ./config/openedx:/openedx/config
- ./data/cms_worker:/openedx/data
depends_on:
- cms
############# Xqueue: external grading of Open edX problems
xqueue:
image: regis/openedx-xqueue:ginkgo
build:
context: ./xqueue
volumes:
- ./config/xqueue:/openedx/config
- ./data/xqueue:/openedx/data
restart: unless-stopped
depends_on:
- mysql
xqueue_consumer:
image: regis/openedx-xqueue:ginkgo
build:
context: ./xqueue
volumes:
- ./config/xqueue:/openedx/config
- ./data/xqueue:/openedx/data
restart: unless-stopped
# Run 12 workers per queue
command: ./manage.py run_consumer 12
depends_on:
- mysql