All Projects → openfun → Openedx Docker

openfun / Openedx Docker

Licence: agpl-3.0
🐳 A best practice Docker image of Open edX

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Openedx Docker

Relate
RELATE is an Environment for Learning And TEaching
Stars: ✭ 239 (+222.97%)
Mutual labels:  django, lms
Academicstoday Django
A open-source platform for online course-based learning and education.
Stars: ✭ 130 (+75.68%)
Mutual labels:  django, lms
Bitnami Docker Moodle
Bitnami Docker Image for Moodle
Stars: ✭ 188 (+154.05%)
Mutual labels:  lms, docker-image
Photonix
This is a new web-based photo management application. Run it on your home server and it will let you find the right photo from your collection on any device. Smart filtering is made possible by object recognition, location awareness, color analysis and other ML algorithms.
Stars: ✭ 592 (+700%)
Mutual labels:  django, docker-image
Django Likes
Django app providing view interface to django-secretballot.
Stars: ✭ 72 (-2.7%)
Mutual labels:  django
Myblog
python 博客系统,基于django
Stars: ✭ 70 (-5.41%)
Mutual labels:  django
Dockerfile Best Practices
Best Practices writing a Dockerfile
Stars: ✭ 72 (-2.7%)
Mutual labels:  docker-image
Dockerfile
📦 Dockerfiles from WebDevOps for PHP, Apache and Nginx (with PHP5 and PHP7)
Stars: ✭ 1,169 (+1479.73%)
Mutual labels:  docker-image
Weixin demo
微信小程序后端开发demo,包括获取openid、微信支付(统一下单、支付回调、企业付款
Stars: ✭ 74 (+0%)
Mutual labels:  django
See
基于开源组件(Inception & SQLAdvisor & SOAR)的SQL审核&SQL优化的Web平台
Stars: ✭ 1,187 (+1504.05%)
Mutual labels:  django
Alpine Erlang
An alpine image with Erlang installed, intended for releases
Stars: ✭ 73 (-1.35%)
Mutual labels:  docker-image
Sas Container Recipes
A collection of recipes and other resources for building containers that include SAS Viya software.
Stars: ✭ 71 (-4.05%)
Mutual labels:  docker-image
Papermerge
Open Source Document Management System for Digital Archives (Scanned Documents)
Stars: ✭ 1,177 (+1490.54%)
Mutual labels:  django
Puppeteer Container
A GitHub Action / Docker image for Puppeteer, the Headless Chrome Node API
Stars: ✭ 72 (-2.7%)
Mutual labels:  docker-image
Lms
LMS allows teachers and educators to easily provide feedback on student programming work - both manually and automatically.
Stars: ✭ 74 (+0%)
Mutual labels:  lms
Django Rest React Pycon
🐍 Demo repo for Pycon X talk "Decoupling Django with Django REST (and a sprinkle of React)"
Stars: ✭ 72 (-2.7%)
Mutual labels:  django
Docker Pxe
A virtualized implementation of PXE supported by DNSMasq
Stars: ✭ 72 (-2.7%)
Mutual labels:  docker-image
Pyarweb
El sitio web de Python Argentina
Stars: ✭ 73 (-1.35%)
Mutual labels:  django
Docker Nuxt
Docker image to run NUXT.js application in production mode
Stars: ✭ 71 (-4.05%)
Mutual labels:  docker-image
Docker Headless Vnc Container
Collection of Docker images with headless VNC environments
Stars: ✭ 1,176 (+1489.19%)
Mutual labels:  docker-image

Open edX Docker

France Université Numérique introduces an alternative Docker approach to install a complete and customized version of Open edX.

The idea is to handcraft a Dockerfile, in order to make the project simpler, more flexible and fully operable by developers.

Quick preview

If you're looking for a quick preview of OpenEdX Docker, you can take a look at our dedicated demo site.

It is connected back-to-back with a demo of Richie, a CMS for Open Education based on Django.

Two users are available for testing:

Richie's admin is available at https://demo.richie.education/admin/ and can be accessed via the following user account: admin/admin.

The demonstration databases are regularly flushed.

Approach

This project builds a docker image that is ready for production.

At France Université Numérique, we are deploying Open edX Docker to OpenShift, for many customers and in multiple environments using Arnold:

  • The Open edX settings were polished to unlock powerful configuration management features: sensible defaults, flexible overrides using YAML files and/or environment variables, secure credentials using Ansible Vault and PGP keys,
  • We focused on a best practice installation of edxapp, the core Open edX application. You can build you own image by adding specific Xblocks or Django apps in a Dockerfile inheriting from this one (see https://github.com/openfun/fonzie for an example).

Docker compose is only used for development purposes so that we can code locally and see our changes immediately:

  • sources and configuration files are mounted from the host,
  • the Docker CMD launches Django's development server instead of gunicorn,
  • ports are opened on the application containers to allow bypassing nginx.

Docker compose also allows us to run a complete project in development, including database services which in production are not run on Docker. See the docker-compose file for details on each service:

  • mysql: the SQL database used to structure and persist the application data,
  • mongodb: the no-SQL database used to store course content,
  • memcached: the cache engine,
  • lms: the Django web application used by learners,
  • cms: the Django web application used by teachers,
  • nginx: the front end web server configured to serve static/media files and proxy other requests to Django.
  • mailcatcher the email backend

Concerning Redis, it is possible to run a single redis instance (the default choice) or to run redis with sentinel to simulate a HA instance. To use Redis sentinel you have to set the REDIS_SERVICE environment variable to redis-sentinel:

$ export REDIS_SERVICE=redis-sentinel

To switch back to the single redis instance, unset this environment variable:

$ unset REDIS_SERVICE

Prerequisite

Make sure you have a recent version of Docker and Docker Compose installed on your laptop:

$ docker -v
  Docker version 17.12.0-ce, build c97c6d6

$ docker-compose --version
  docker-compose version 1.17.1, build 6d101fb

⚠️ Docker Compose version 1.19 is not supported because of a bug (see https://github.com/docker/compose/issues/5686). Please downgrade to 1.18 or upgrade to a higher version.

Getting started

First, you need to choose a release/flavor of OpenEdx versions we support. You can list them and get instructions about how to select/activate a target release using the bin/activate script. An example output follows:

$ bin/activate
Select an available release to activate:
[1] master/0/bare (default)
[2] hawthorn/1/bare
[3] hawthorn/1/oee
Your choice: 3

# Copy/paste hawthorn/1/oee environment:
export EDX_RELEASE="hawthorn.1"
export FLAVOR="oee"
export EDX_RELEASE_REF="open-release/hawthorn.1"
export EDX_DEMO_RELEASE_REF="open-release/hawthorn.1"

# Or run the following command:
. ${HOME}/Work/openedx-docker/releases/hawthorn/1/oee/activate

# Check your environment with:
make info

Once your environment is set, start the full project by running:

$ make bootstrap

You should now be able to view the web applications:

See other available commands by running:

$ make --help

Developer guide

If you intend to work on edx-platform or its configuration, you'll need to compile static files in local directories that are mounted as docker volumes in the target container:

$ make dev-assets

Now you can start services development server via:

$ make dev

You should be able to view the web applications:

Hacking with themes

To work on a particular theme, we invite you to use the paver watch_assets command; e.g.:

$ make dev-watch

Troubleshooting: if the command above raises the following error:

OSError: inotify watch limit reached

Then you will need to increase the host's fs.inotify.max_user_watches kernel setting (for reference, see https://unix.stackexchange.com/a/13757):

# /etc/sysctl.conf (debian based)
fs.inotify.max_user_watches=524288

Available Docker images

The aim of this project is to prepare several flavors of images, the docker files and settings of which are living in their own directory (see releases/)

Release paths on the current repository are of the form:

{release name}/{release number}/{flavor}

With:

  • release name: OpenEdx release name (e.g. hawthorn)
  • release number: OpenEdx release number (e.g. 1)
  • flavor: the release flavor (e.g. bare for standard OpenEdx release and oee for OpenEdx Extended release).

We are pushing to DockerHub only images that are the result of a tag respecting the following pattern:

{release}(-{flavor})-x.y.z

The release (e.g. hawthorn.1) typically includes the release name (e.g. hawthorn) and the release number (e.g. 1). The flavor is optional.

Here are some valid examples:

  • dogwood.3-1.0.3
  • hawthorn.1-oee-2.0.1

Nginx

This project also provides an nginx companion image that can be used alongside the edxapp image for faster deployments and better performance.

The classical way to handle and serve static files in a Django application is to collect them (using the collectstatic management command) and post-process them using an appropriate storage back-end that uses cache-busting techniques to avoid old versus new static files collisions (e.g. ManifestStaticFilesStorage).

Depending on the edx-platform release, some files may not benefit from a cache busting md5 hash, leading to unexpected side effects during deployment.

To prevent such behavior, for each new openedx-docker release, we will also release an edxapp-nginx image with the same Docker tag. This image is an OpenShift-ready nginx image with embedded edxapp's static files. You are supposed to use this image to serve your static files, media and reverse proxy to the version-matching edxapp instance.

Alternative projects

If what you're looking for is a quick 1-click installation of the complete Open edX stack, you may take a look at Tutor.

License

The code in this repository is licensed under the GNU AGPL-3.0 terms unless otherwise noted.

Please see LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].