Code Monkey home page Code Monkey logo

tutor's Introduction

Tutor: the Docker-based Open edX distribution designed for peace of mind

Tutor logo


Source code Forums Documentation PyPI releases AGPL License Follow us on Twitter Follow us on Youtube

Tutor is the official Docker-based Open edX distribution, both for production and local development. The goal of Tutor is to make it easy to deploy, customise, upgrade and scale Open edX. Tutor is reliable, fast, extensible, and it is already used to deploy hundreds of Open edX platforms around the world.

Do you need professional assistance setting up or managing your Open edX platform? Edly provides online support as part of its Open edX installation service.

Features

Tutor local launch

Quickstart

  1. Install the latest stable release of Tutor
  2. Run tutor local launch
  3. You're done!

Documentation

Extensive documentation is available: https://docs.tutor.edly.io/

Is there a problem?

Please follow the instructions from the troubleshooting section in the docs.

Support

To get community support, go to the official Open edX discussion forum: https://discuss.openedx.org. For official support, Edly provides professional assistance as part of its Open edX installation service.

Contributing

We welcome contributions to Tutor! To learn how you can contribute, please check the relevant section of the Tutor docs: https://docs.tutor.edly.io/tutor.html#contributing.

License

This work is licensed under the terms of the GNU Affero General Public License (AGPL).

tutor's People

Contributors

abdul-muqadim-arbisoft avatar alec4r avatar angonz avatar armbouhali avatar bbrsofiane avatar bradenmacdonald avatar cacciaresi avatar codewithemad avatar danyal-faheem avatar dawoudsheraz avatar ericfab179 avatar fghaas avatar frob avatar gabor-boros avatar ghassanmas avatar iamcristye avatar kdmccormick avatar mariajgrimaldi avatar michaelwheeler avatar moisesgsalas avatar nedbat avatar omarithawi avatar pcliupc avatar ppar avatar ravikhetani avatar regisb avatar sarina avatar shimulch avatar silviot avatar wejie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tutor's Issues

Migrations are killed before they can finish

Rather than commenting on the old issue #3, I'm creating a new one since this seems to be a different problem:

I've run make all three times now, and every time, this process gets killed before it has time to finish. ./manage.py lms --settings=production migrate

2018-02-12 23:18:58,366 INFO 121 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Operations to perform:
  Synchronize unmigrated apps: eventtracking_django, gating, links, webpack_loader, course_structure_api, release_util, discussion_api, learner_dashboard, edxnotes, django_sites_extensions, auth_exchange, service_status, web_fragments, coursegraph, sekizai, rest_framework, edxmako, openassessment, datadog, staticbook, common_views, course_wiki, edx_sga, support, enterprise_support, django_object_actions, django_countries, humanize, course_blocks, provider, notification_prefs, thumbnail, xblock, course_experience, mptt, notifier_api, staticfiles, markdownedx, fileupload, plugin_api, course_search, edx_jsme, monitoring, instructor, static_template_view, corsheaders, statici18n, pipeline, simple_history, enrollment, messages, config_models, django_extensions, dashboard, django_nose, debug, mailing, discussion, course_bookmarks
  Apply all migrations: wiki, status, dark_lang, student, video_config, branding, user_api, django_comment_common, redirects, course_overviews, sites, experiments, grades, crawlers, lms_xblock, rss_proxy, bookmarks, waffle_utils, mobile_api, badges, course_groups, database_fixups, integrated_channel, course_modes, sessions, verified_track_content, shoppingcart, block_structure, external_auth, track, contenttypes, splash, workflow, certificates, static_replace, third_party_auth, assessment, sap_success_factors, submissions, oauth_dispatch, oauth2_provider, theming, instructor_task, organizations, edx_oauth2_provider, microsite_configuration, django_notify, celery_utils, api_admin, auth, util, verify_student, catalog, oauth2, site_configuration, social_django, credentials, email_marketing, contentserver, waffle, xblock_django, embargo, commerce, milestones, course_action_state, edx_proctoring, admin, oauth_provider, courseware, programs, djcelery, edxval, teams, credit, django_openid_auth, bulk_email, survey, course_structures, enterprise, cors_csrf, notes, self_paced
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states...bash: line 1:   121 Killed                  ./manage.py lms --settings=production migrate
make: *** [migrate] Error 137

Added a new library; pip install needs to be run everytime on root login

Hi,
I just added a new library bcrypt by doing a pip install. I also included the dependency in edx-platform/requirements/edx/base.txt . After that I quit my terminal.
When i freshly tried to do a 'make cms' followed by ./manage.py cms runserver, it throws a dependency error. Of course if I do call pip install brcypt again, it works as a charm.

I understand that there is a platform/requirements/edx/development.txt , should i include the brcypt dependency there and run 'pip install -r requirements/edx/development.txt' everytime before i run the server . is base.txt only meant for production.
What i expected was that if i include the dependency in some txt file under requirements, I would not have to run pip install manually again.

With regards,
Shashi Kiran G M

require.storage.OptimizationError: Error while running r.js optimizer

Steps to reproduce

AWS Linux image:
Ubuntu 16_04
Linux ip-172-31-24-45 4.4.0-1061-aws #70-Ubuntu SMP Fri May 25 21:47:34 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Docker:
Docker version 18.06.1-ce, build e68fc7a
docker-compose:
docker-compose version 1.22.0, build f46880fe

Reproduce the issue:

  1. Clone git repo
  2. run make all
python manage.py lms --settings=universal.production collectstatic --ignore "fixtures" --ignore "karma_*.js" --ignore "spec" --ignore "spec_helpers" --ignore "spec-helpers" --ignore "xmodule_js" --ignore "geoip" --ignore "sass" --noinput > /dev/null
2018-08-22 13:05:57,152 INFO 698 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
2018-08-22 13:05:57,152 INFO 698 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Traceback (most recent call last):
  File "manage.py", line 121, in <module>
    execute_from_command_line([sys.argv[0]] + django_args)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in handle
    collected = self.collect()
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 139, in collect
    for original_path, processed_path, processed in processor:
  File "/usr/local/lib/python2.7/dist-packages/require/storage.py", line 108, in post_process
    baseUrl = require_settings.REQUIRE_BASE_URL,
  File "/usr/local/lib/python2.7/dist-packages/require/storage.py", line 52, in run_optimizer
    raise OptimizationError("Error while running r.js optimizer.")
require.storage.OptimizationError: Error while running r.js optimizer.


Captured Task Output:
---------------------

---> pavelib.assets.update_assets
---> pavelib.prereqs.install_node_prereqs
---> pavelib.assets.process_xmodule_assets
---> pavelib.prereqs.install_python_prereqs
xmodule_assets common/static/xmodule
mkdir_p path('common/static/common/js/vendor')
mkdir_p path('common/static/common/css')
mkdir_p path('common/static/common/css/vendor')
/bin/cp -rf node_modules/backbone.paginator/lib/backbone.paginator.js common/static/common/js/vendor
/bin/cp -rf node_modules/backbone/backbone.js common/static/common/js/vendor
/bin/cp -rf node_modules/bootstrap/dist/js/bootstrap.bundle.js common/static/common/js/vendor
/bin/cp -rf node_modules/hls.js/dist/hls.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery-migrate/dist/jquery-migrate.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery.scrollto/jquery.scrollTo.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery/dist/jquery.js common/static/common/js/vendor
/bin/cp -rf node_modules/moment-timezone/builds/moment-timezone-with-data.js common/static/common/js/vendor
/bin/cp -rf node_modules/moment/min/moment-with-locales.js common/static/common/js/vendor
/bin/cp -rf node_modules/picturefill/dist/picturefill.js common/static/common/js/vendor
/bin/cp -rf node_modules/requirejs/require.js common/static/common/js/vendor
/bin/cp -rf node_modules/underscore.string/dist/underscore.string.js common/static/common/js/vendor
/bin/cp -rf node_modules/underscore/underscore.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/i18nMessages.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/courseOutlineHealthCheck.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/courseOutlineHealthCheck.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/i18nMessages.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/accessibilityPolicy.min.css common/static/common/css/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/assets.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/common.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/runtime.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/accessibilityPolicy.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/common.min.css common/static/common/css/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/courseOutlineHealthCheck.min.css common/static/common/css/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/assets.min.css common/static/common/css/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/courseHealthCheck.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/runtime.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/editImageModal.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/courseHealthCheck.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/accessibilityPolicy.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/common.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/editImageModal.min.css common/static/common/css/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/assets.min.js.map common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/courseHealthCheck.min.css common/static/common/css/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/editImageModal.min.js common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/i18n/messages/zh_CN.json common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/i18n/messages/es_419.json common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/i18n/messages/ar.json common/static/common/js/vendor
/bin/cp -rf node_modules/@edx/studio-frontend/dist/i18n/messages/fr.json common/static/common/js/vendor
/bin/cp -rf node_modules/which-country/index.js common/static/common/js/vendor
/bin/cp -rf node_modules/sinon/pkg/sinon.js common/static/common/js/vendor
/bin/cp -rf node_modules/squirejs/src/Squire.js common/static/common/js/vendor
---> pavelib.assets.webpack
python manage.py lms --settings=universal.production print_setting STATIC_ROOT 2>/dev/null
python manage.py cms --settings=universal.production print_setting STATIC_ROOT 2>/dev/null
python manage.py lms --settings=universal.production print_setting WEBPACK_CONFIG_PATH 2>/dev/null
NODE_ENV=production STATIC_ROOT_LMS=/openedx/data/staticfiles STATIC_ROOT_CMS=/openedx/data/staticfiles/studio $(npm bin)/webpack --config=webpack.prod.config.js
python manage.py lms --settings=universal.production compile_sass lms 
python manage.py lms --settings=universal.production collectstatic --ignore "fixtures" --ignore "karma_*.js" --ignore "spec" --ignore "spec_helpers" --ignore "spec-helpers" --ignore "xmodule_js" --ignore "geoip" --ignore "sass" --noinput > /dev/null

Build failed running pavelib.assets.update_assets: Subprocess return code: 1
Makefile:57: recipe for target 'assets' failed
make: *** [assets] Error 1

In order to find out more details I tried the following:

  1. Clone git repo
  2. $ make all
  3. error occured

  4. $ make lms
  5. when docker bash is active for lms:
openedx@ee1f9b13e70b:~/edx-platform$ python manage.py lms --settings=universal.production collectstatic --ignore "fixtures" --ignore "karma_*.js" --ignore "spec" --ignore "spec_helpers" --ignore "spec-helpers" --ignore "xmodule_js" --ignore "geoip" --ignore "sass" --noinput > /dev/null

Produced:

2018-08-22 13:16:51,171 INFO 19 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
2018-08-22 13:16:51,171 INFO 19 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
{ [Error: ENOENT: no such file or directory, open '/tmp/tmpxKilB9/common/js/vendor/backbone.paginator.js']
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/tmp/tmpxKilB9/common/js/vendor/backbone.paginator.js',
  fileName: '/tmp/tmpxKilB9/common/js/vendor/backbone.paginator.js' }
{ [Error: ENOENT: no such file or directory, open '/tmp/tmpxKilB9/common/js/vendor/moment-with-locales.js']
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/tmp/tmpxKilB9/common/js/vendor/moment-with-locales.js',
  fileName: '/tmp/tmpxKilB9/common/js/vendor/moment-with-locales.js' }
Traceback (most recent call last):
  File "manage.py", line 121, in <module>
    execute_from_command_line([sys.argv[0]] + django_args)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in handle
    collected = self.collect()
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 139, in collect
    for original_path, processed_path, processed in processor:
  File "/usr/local/lib/python2.7/dist-packages/require/storage.py", line 108, in post_process
    baseUrl = require_settings.REQUIRE_BASE_URL,
  File "/usr/local/lib/python2.7/dist-packages/require/storage.py", line 52, in run_optimizer
    raise OptimizationError("Error while running r.js optimizer.")
require.storage.OptimizationError: Error while running r.js optimizer.

Do you have any suggestion how to move on here?

Unable to access LMS or Studio portals

Hi,
I am new to openedx and have been trying to get a lite version of the platform up and running for a project of ours(planning to customize).
I have followed all the instructions specified here. However I am unable to access both the LMS and CMS portals at http://localhost:8000 and http://localhost:8001 respectively.
http://localhost:80 however works, show the default nginx page.

Note: for the LMS site, my input was localhost:8000 and for the CMS site my input was localhost:8001

Any help would be much appreciated. Thanks and Regards!!

NotImplementedError: edX Studio doesn't support third-party xblock handler urls

After attempting to import the demo course (see #7), I get this error when running make up:

cms_worker_1  | [2018-02-17 00:08:19,782: ERROR/Worker-3] BlockStructure: update_course_in_cache_v2 encountered unknown error in course course-v1:edX+DemoX+Demo_Course, task_id ff0429d7-8e9e-4407-a1f5-246a35af68f8. Retry #0
cms_worker_1  | Traceback (most recent call last):
cms_worker_1  |   File "/openedx/edx-platform/openedx/core/djangoapps/content/block_structure/tasks.py", line 101, in _call_and_retry_if_needed
cms_worker_1  |     api_method(course_key)
cms_worker_1  |   File "/openedx/edx-platform/openedx/core/djangoapps/content/block_structure/api.py", line 29, in update_course_in_cache
cms_worker_1  |     return get_block_structure_manager(course_key).update_collected_if_needed()
cms_worker_1  |   File "/openedx/edx-platform/openedx/core/djangoapps/content/block_structure/manager.py", line 115, in update_collected_if_needed
cms_worker_1  |     self._update_collected()
cms_worker_1  |   File "/openedx/edx-platform/openedx/core/djangoapps/content/block_structure/manager.py", line 127, in _update_collected
cms_worker_1  |     BlockStructureTransformers.collect(block_structure)
cms_worker_1  |   File "/openedx/edx-platform/openedx/core/djangoapps/content/block_structure/transformers.py", line 80, in collect
cms_worker_1  |     transformer.collect(block_structure)
cms_worker_1  |   File "/openedx/edx-platform/lms/djangoapps/course_api/blocks/transformers/blocks_api.py", line 51, in collect
cms_worker_1  |     StudentViewTransformer.collect(block_structure)
cms_worker_1  |   File "/openedx/edx-platform/lms/djangoapps/course_api/blocks/transformers/student_view.py", line 63, in collect
cms_worker_1  |     student_view_data = block.student_view_data()
cms_worker_1  |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/video_module/video_module.py", line 984, in student_view_data
cms_worker_1  |     for lang in self.available_translations(transcripts_info, verify_assets=False)
cms_worker_1  |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/video_module/video_module.py", line 984, in <dictcomp>
cms_worker_1  |     for lang in self.available_translations(transcripts_info, verify_assets=False)
cms_worker_1  |   File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1480, in handler_url
cms_worker_1  |     return descriptor_global_handler_url(block, handler_name, suffix, query, thirdparty)
cms_worker_1  |   File "/openedx/edx-platform/cms/lib/xblock/runtime.py", line 14, in handler_url
cms_worker_1  |     raise NotImplementedError("edX Studio doesn't support third-party xblock handler urls")
cms_worker_1  | NotImplementedError: edX Studio doesn't support third-party xblock handler urls

Bad Request 400 error

After doing make all command, installation process has finished but I could not connect to the domain name i provided. I did make lms to open the shell. I did paver update_assets lms --settings=universal.development
./manage.py lms runserver 0.0.0.0:8000 everything seems okay however when I write http://0.0.0.0:8000/, I get bad request.

Output of terminal :

2018-06-02 19:50:11,754 INFO 970 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Performing system checks...

System check identified no issues (0 silenced).
June 02, 2018 - 19:50:14
Django version 1.8.18, using settings 'lms.envs.universal.production'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[02/Jun/2018 19:51:21] "GET / HTTP/1.1" 400 26
[02/Jun/2018 19:51:21] "GET /favicon.ico HTTP/1.1" 400 26
[02/Jun/2018 19:51:23] "GET / HTTP/1.1" 400 26
[02/Jun/2018 19:51:23] "GET /favicon.ico HTTP/1.1" 400 26
[02/Jun/2018 19:51:35] "GET /courses HTTP/1.1" 400 26
[02/Jun/2018 19:51:35] "GET /favicon.ico HTTP/1.1" 400 26
[02/Jun/2018 19:59:46] "GET / HTTP/1.1" 400 26
[02/Jun/2018 19:59:46] "GET /favicon.ico HTTP/1.1" 400 26

Studio is missing all images and CSS

During one of the builds, something happened and now the Studio site is missing all CSS and images. What would I do to restore the site to its full glory? ;)

welcome___edx_studio

django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13'

Hi Regis,

I did a git pull, configure and make build and now when I run make up i'm seeing this permissions error with the xqueue service.

And when I go to www.myopenedx.com and studio.myopenedx.com, I'm seeing "400 Bad Request".

xqueue_consumer_1  | Traceback (most recent call last):
xqueue_consumer_1  |   File "./manage.py", line 10, in <module>
xqueue_consumer_1  |     execute_from_command_line(sys.argv)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
xqueue_consumer_1  |     utility.execute()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
xqueue_consumer_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
xqueue_consumer_1  |     self.execute(*args, **cmd_options)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
xqueue_consumer_1  |     self.check()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
xqueue_consumer_1  |     include_deployment_checks=include_deployment_checks,
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
xqueue_consumer_1  |     new_errors = check(app_configs=app_configs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
xqueue_consumer_1  |     errors.extend(model.check(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
xqueue_consumer_1  |     errors.extend(cls._check_fields(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
xqueue_consumer_1  |     errors.extend(field.check(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
xqueue_consumer_1  |     errors = super(AutoField, self).check(**kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
xqueue_consumer_1  |     errors.extend(self._check_backend_specific_checks(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
xqueue_consumer_1  |     return connection.validation.check_field(self, **kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
xqueue_consumer_1  |     field_type = field.db_type(connection)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
xqueue_consumer_1  |     return connection.data_types[self.get_internal_type()] % data
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
xqueue_consumer_1  |     return getattr(connections[DEFAULT_DB_ALIAS], item)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
xqueue_consumer_1  |     if self.features.supports_microsecond_precision:
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
xqueue_consumer_1  |     return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
xqueue_consumer_1  |     with self.temporary_connection():
xqueue_consumer_1  |   File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
xqueue_consumer_1  |     return self.gen.next()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
xqueue_consumer_1  |     cursor = self.cursor()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
xqueue_consumer_1  |     cursor = self.make_cursor(self._cursor())
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
xqueue_consumer_1  |     self.ensure_connection()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
xqueue_consumer_1  |     self.connect()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
xqueue_consumer_1  |     six.reraise(dj_exc_type, dj_exc_value, traceback)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
xqueue_consumer_1  |     self.connect()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
xqueue_consumer_1  |     self.connection = self.get_new_connection(conn_params)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
xqueue_consumer_1  |     conn = Database.connect(**conn_params)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
xqueue_consumer_1  |     return Connection(*args, **kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
xqueue_consumer_1  |     super(Connection, self).__init__(*args, **kwargs2)
xqueue_consumer_1  | django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13' (using password: YES)")
xqueue_consumer_1  | Traceback (most recent call last):
xqueue_consumer_1  |   File "./manage.py", line 10, in <module>
xqueue_consumer_1  |     execute_from_command_line(sys.argv)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
xqueue_consumer_1  |     utility.execute()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
xqueue_consumer_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
xqueue_consumer_1  |     self.execute(*args, **cmd_options)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
xqueue_consumer_1  |     self.check()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
xqueue_consumer_1  |     include_deployment_checks=include_deployment_checks,
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
xqueue_consumer_1  |     new_errors = check(app_configs=app_configs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
xqueue_consumer_1  |     errors.extend(model.check(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
xqueue_consumer_1  |     errors.extend(cls._check_fields(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
xqueue_consumer_1  |     errors.extend(field.check(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
xqueue_consumer_1  |     errors = super(AutoField, self).check(**kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
xqueue_consumer_1  |     errors.extend(self._check_backend_specific_checks(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
xqueue_consumer_1  |     return connection.validation.check_field(self, **kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
xqueue_consumer_1  |     field_type = field.db_type(connection)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
xqueue_consumer_1  |     return connection.data_types[self.get_internal_type()] % data
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
xqueue_consumer_1  |     return getattr(connections[DEFAULT_DB_ALIAS], item)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
xqueue_consumer_1  |     if self.features.supports_microsecond_precision:
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
xqueue_consumer_1  |     return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
xqueue_consumer_1  |     with self.temporary_connection():
xqueue_consumer_1  |   File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
xqueue_consumer_1  |     return self.gen.next()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
xqueue_consumer_1  |     cursor = self.cursor()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
xqueue_consumer_1  |     cursor = self.make_cursor(self._cursor())
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
xqueue_consumer_1  |     self.ensure_connection()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
xqueue_consumer_1  |     self.connect()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
xqueue_consumer_1  |     six.reraise(dj_exc_type, dj_exc_value, traceback)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
xqueue_consumer_1  |     self.connect()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
xqueue_consumer_1  |     self.connection = self.get_new_connection(conn_params)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
xqueue_consumer_1  |     conn = Database.connect(**conn_params)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
xqueue_consumer_1  |     return Connection(*args, **kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
xqueue_consumer_1  |     super(Connection, self).__init__(*args, **kwargs2)
xqueue_consumer_1  | django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13' (using password: YES)")
xqueue_consumer_1  | Traceback (most recent call last):
xqueue_consumer_1  |   File "./manage.py", line 10, in <module>
xqueue_consumer_1  |     execute_from_command_line(sys.argv)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
xqueue_consumer_1  |     utility.execute()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
xqueue_consumer_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
xqueue_consumer_1  |     self.execute(*args, **cmd_options)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
xqueue_consumer_1  |     self.check()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
xqueue_consumer_1  |     include_deployment_checks=include_deployment_checks,
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
xqueue_consumer_1  |     new_errors = check(app_configs=app_configs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
xqueue_consumer_1  |     errors.extend(model.check(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
xqueue_consumer_1  |     errors.extend(cls._check_fields(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
xqueue_consumer_1  |     errors.extend(field.check(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
xqueue_consumer_1  |     errors = super(AutoField, self).check(**kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
xqueue_consumer_1  |     errors.extend(self._check_backend_specific_checks(**kwargs))
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
xqueue_consumer_1  |     return connection.validation.check_field(self, **kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
xqueue_consumer_1  |     field_type = field.db_type(connection)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
xqueue_consumer_1  |     return connection.data_types[self.get_internal_type()] % data
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
xqueue_consumer_1  |     return getattr(connections[DEFAULT_DB_ALIAS], item)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
xqueue_consumer_1  |     if self.features.supports_microsecond_precision:
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
xqueue_consumer_1  |     return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
xqueue_consumer_1  |     with self.temporary_connection():
xqueue_consumer_1  |   File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
xqueue_consumer_1  |     return self.gen.next()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
xqueue_consumer_1  |     cursor = self.cursor()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
xqueue_consumer_1  |     cursor = self.make_cursor(self._cursor())
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
xqueue_consumer_1  |     self.ensure_connection()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
xqueue_consumer_1  |     self.connect()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
xqueue_consumer_1  |     six.reraise(dj_exc_type, dj_exc_value, traceback)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
xqueue_consumer_1  |     self.connect()
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
xqueue_consumer_1  |     self.connection = self.get_new_connection(conn_params)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
xqueue_consumer_1  |     conn = Database.connect(**conn_params)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
xqueue_consumer_1  |     return Connection(*args, **kwargs)
xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
xqueue_consumer_1  |     super(Connection, self).__init__(*args, **kwargs2)
xqueue_consumer_1  | django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13' (using password: YES)")

Correct placement of .json files?

i’m trying to load some settings from lms.auth.json and cms.auth.json and wondering how/where those files get read in openedx-docker

i’m using production.py and when i add the settings in that .py file, then they get loaded
but when i edit the files one level up in the “universal” folder, they appear to be getting ignored.
is this not the config dir that is read during runtime?

i notice these files (lms.auth.json and cms.auth.json) also exist in /edxapp/config and /openedx/config

where is the correct place to edit them in order that they’ll be read when the system starts up?

IOError: [Errno 2] No such file or directory: u'/openedx/data/uploads/user_tasks/2018/03/22/course.QQQZen.tar.gz'

When I try to export a course, I get this error. I'm guessing this is because the directory /openedx/data/uploads/user_tasks has not been created?

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/http.py", line 45, in inner
    return func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 110, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/openedx/edx-platform/common/djangoapps/util/views.py", line 49, in inner
    response = view_func(request, *args, **kwargs)
  File "/openedx/edx-platform/cms/djangoapps/contentstore/views/import_export.py", line 426, in export_output_handler
    tarball = course_import_export_storage.open(artifact.file.name)
  File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py", line 37, in open
    return self._open(name, mode)
  File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py", line 201, in _open
    return File(open(self.path(name), mode))
IOError: [Errno 2] No such file or directory: u'/openedx/data/uploads/user_tasks/2018/03/22/course.QQQZen.tar.gz'
2018-03-22 00:48:17,688 ERROR 1485 [django.request] base.py:256 - Internal Server Error: /export_output/course-v1:Appsembler+OS101+2018_Winter
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/http.py", line 45, in inner
    return func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 110, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/openedx/edx-platform/common/djangoapps/util/views.py", line 49, in inner
    response = view_func(request, *args, **kwargs)
  File "/openedx/edx-platform/cms/djangoapps/contentstore/views/import_export.py", line 426, in export_output_handler
    tarball = course_import_export_storage.open(artifact.file.name)
  File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py", line 37, in open
    return self._open(name, mode)
  File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py", line 201, in _open
    return File(open(self.path(name), mode))
IOError: [Errno 2] No such file or directory: u'/openedx/data/uploads/user_tasks/2018/03/22/course.QQQZen.tar.gz'

Developer 'make lms' not working; recipe for target 'lms' failed

Dear Regis,
I have been trying out to build openedx with the pull request patch merged today. I am trying out the commands listed under development section.
Everything works till make migrate. But if try to call 'make lms' or 'make cms', there is an error. Below is the stack trace.

Note: I only got to this section now(due to slow internet/computer), otherwise I would have reported yesterday itself before the patch was merged in to the master branch.

Stacktrace

docker-compose run --rm -e USERID="$(id -u)" -e SETTINGS=development --volume="/home/rudra/Desktop/iks_workspace/openedx/edx-platform:/openedx/edx-platform" -p 8000:8000 lms bash
Run a one-off command on a service.

For example:

$ docker-compose run web python manage.py shell

By default, linked services will be started, unless they are already
running. If you do not want to start linked services, use
docker-compose run --no-deps SERVICE COMMAND [ARGS...].

Usage: run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

Options:
-d Detached mode: Run container in the background, print
new container name.
--name NAME Assign a name to the container
--entrypoint CMD Override the entrypoint of the image.
-e KEY=VAL Set an environment variable (can be used multiple times)
-u, --user="" Run as specified username or uid
--no-deps Don't start linked services.
--rm Remove container after run. Ignored in detached mode.
-p, --publish=[] Publish a container's port(s) to the host
--service-ports Run command with the service's ports enabled and mapped
to the host.
-T Disable pseudo-tty allocation. By default docker-compose run
allocates a TTY.
-w, --workdir="" Working directory inside the container
Makefile:57: recipe for target 'lms' failed
make: *** [lms] Error 1

Importing course fails

When I try to run the command make import-demo-course

I get some errors and the course doesn't appear to have imported correctly because I get a 404 error when I click on the course, even though it appears in the catalog:

2018-02-17 00:07:48,144 INFO 20 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Importing.  Data_dir=../data, source_dirs=('../edx-demo-course',)
2018-02-17 00:07:48,389 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,405 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,415 ERROR 20 [xmodule.vertical_block] vertical_block.py:131 - Unable to load child when parsing Vertical. Continuing...
Traceback (most recent call last):
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/vertical_block.py", line 128, in definition_from_xml
    child_block = system.process_xml(etree.tostring(child, encoding='unicode'))
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/modulestore/xml.py", line 196, in process_xml
    id_manager,
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1601, in xblock_from_node
    self._convert_reference_fields_to_keys(block)  # difference from XBlock.runtime
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1645, in _convert_reference_fields_to_keys
    field_value = getattr(xblock, field.name)
  File "/usr/local/lib/python2.7/dist-packages/xblock/fields.py", line 513, in __get__
    value = self.from_json(field_data.get(xblock, self.name))
  File "/usr/local/lib/python2.7/dist-packages/xblock/fields.py", line 819, in from_json
    raise TypeError('Value stored in a List must be None or a list, found %s' % type(value))
TypeError: Value stored in a List must be None or a list, found <type 'str'>
2018-02-17 00:07:48,417 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,430 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,446 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,473 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,487 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,497 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,513 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,524 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,535 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,548 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,559 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,745 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,757 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,773 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,814 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,836 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,861 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,876 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,949 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:48,973 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,006 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,032 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,043 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,055 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,071 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,083 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,096 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,106 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:49,471 INFO 20 [openedx.core.djangoapps.content.course_overviews.models] models.py:150 - Creating course overview for course-v1:edX+DemoX+Demo_Course.
2018-02-17 00:07:49,544 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function listen_for_course_publish at 0x7f9c67a3f410> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:49,545 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function listen_for_course_publish at 0x7f9c4c9adaa0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:49,546 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _update_block_structure_on_course_publish at 0x7f9c4c9b36e0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:49,547 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fd578> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:49,548 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fda28> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:49,550 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function trigger_update_xblocks_cache_task at 0x7f9c4c7fdb18> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:49,551 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fd8c0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:50,992 ERROR 20 [root] content.py:461 - Failed to generate thumbnail for asset-v1:edX+DemoX+Demo_Course+type@asset+block@jsmol_Al2O3.png. Exception: cannot identify image file <StringIO.StringIO instance at 0x7f9c4b4bcea8>
Traceback (most recent call last):
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/contentstore/content.py", line 440, in generate_thumbnail
    with Image.open(source) as image:
  File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2319, in open
    % (filename if filename else fp))
IOError: cannot identify image file <StringIO.StringIO instance at 0x7f9c4b4bcea8>
2018-02-17 00:07:51,092 ERROR 20 [root] content.py:461 - Failed to generate thumbnail for asset-v1:edX+DemoX+Demo_Course+type@asset+block@jsmol_1hxw.png. Exception: cannot identify image file <StringIO.StringIO instance at 0x7f9c4b4bf4d0>
Traceback (most recent call last):
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/contentstore/content.py", line 440, in generate_thumbnail
    with Image.open(source) as image:
  File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2319, in open
    % (filename if filename else fp))
IOError: cannot identify image file <StringIO.StringIO instance at 0x7f9c4b4bf4d0>
2018-02-17 00:07:54,224 INFO 20 [root] xml_importer.py:290 - No assets.xml file is present with asset metadata.
2018-02-17 00:07:56,144 INFO 20 [openedx.core.djangoapps.content.course_overviews.models] models.py:147 - Updating course overview for course-v1:edX+DemoX+Demo_Course.
2018-02-17 00:07:56,171 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function listen_for_course_publish at 0x7f9c67a3f410> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,172 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function listen_for_course_publish at 0x7f9c4c9adaa0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,173 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _update_block_structure_on_course_publish at 0x7f9c4c9b36e0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,174 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fd578> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,174 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fda28> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,175 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function trigger_update_xblocks_cache_task at 0x7f9c4c7fdb18> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,176 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fd8c0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:56,188 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/problem/Sample_ChemFormula_Problem has more than one definition
2018-02-17 00:07:56,189 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,194 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/4d672c5893cb4f1dad0de67d2008522e has more than one definition
2018-02-17 00:07:56,299 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,314 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/d45779ad3d024a40a09ad8cc317c0970 has more than one definition
2018-02-17 00:07:56,321 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/55cbc99f262443d886a25cf84594eafb has more than one definition
2018-02-17 00:07:56,322 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,328 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/ade92343df3d4953a40ab3adc8805390 has more than one definition
2018-02-17 00:07:56,336 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/ed5dccf14ae94353961f46fa07217491 has more than one definition
2018-02-17 00:07:56,339 ERROR 20 [xmodule.vertical_block] vertical_block.py:131 - Unable to load child when parsing Vertical. Continuing...
Traceback (most recent call last):
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/vertical_block.py", line 128, in definition_from_xml
    child_block = system.process_xml(etree.tostring(child, encoding='unicode'))
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/modulestore/xml.py", line 196, in process_xml
    id_manager,
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1601, in xblock_from_node
    self._convert_reference_fields_to_keys(block)  # difference from XBlock.runtime
  File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1645, in _convert_reference_fields_to_keys
    field_value = getattr(xblock, field.name)
  File "/usr/local/lib/python2.7/dist-packages/xblock/fields.py", line 513, in __get__
    value = self.from_json(field_data.get(xblock, self.name))
  File "/usr/local/lib/python2.7/dist-packages/xblock/fields.py", line 819, in from_json
    raise TypeError('Value stored in a List must be None or a list, found %s' % type(value))
TypeError: Value stored in a List must be None or a list, found <type 'str'>
2018-02-17 00:07:56,341 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,346 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/9f9e1373cc8243b985c8750cc8acec7d has more than one definition
2018-02-17 00:07:56,355 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/030e35c4756a4ddc8d40b95fbbfff4d4 has more than one definition
2018-02-17 00:07:56,360 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/video/0b9e39477cf34507a7a48f74be381fdd has more than one definition
2018-02-17 00:07:56,371 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/78e3719e864e45f3bee938461f3c3de6 has more than one definition
2018-02-17 00:07:56,377 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/problem/700x_proteinmake has more than one definition
2018-02-17 00:07:56,379 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,384 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/ed01bcd164e64038a78964a16eac3edc has more than one definition
2018-02-17 00:07:56,397 WARNING 20 [xmodule.modulestore.xml] xml.py:169 - Non-unique url_name in xml.  This may break state tracking for content.  url_name=Video_Demonstrations.  Content=<vertical display_name="Video Demonstrations" parent_sequential_url="i4x://edX/DemoX/sequential/19a3
2018-02-17 00:07:56,433 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/Lab_5B_Mosfet_Amplifier_Experiment has more than one definition
2018-02-17 00:07:56,434 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,439 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/03f051f9a8814881a3783d2511613aa6 has more than one definition
2018-02-17 00:07:56,443 WARNING 20 [xmodule.modulestore.xml] xml.py:169 - Non-unique url_name in xml.  This may break state tracking for content.  url_name=New_Unit.  Content=<vertical display_name="New Unit" parent_sequential_url="i4x://edX/DemoX/sequential/simulations" ind
2018-02-17 00:07:56,474 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/html/2b94658d2eee4d85ae13f83bc24cfca9 has more than one definition
2018-02-17 00:07:56,479 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/problem/700x_editmolB has more than one definition
2018-02-17 00:07:56,481 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,485 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/0aa7a3bdbe18427795b0c1a1d7c3cb9a has more than one definition
2018-02-17 00:07:56,498 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/openassessment/b24c33ea35954c7889e1d2944d3fe397 has more than one definition
2018-02-17 00:07:56,499 WARNING 20 [root] mixins.py:522 - XBlock <class 'xblock.internal.DiscussionXBlockWithMixins'> does not contain field url_name
2018-02-17 00:07:56,505 WARNING 20 [xmodule.modulestore.xml] xml.py:233 - i4x://edX/DemoX/discussion/12ad4f3ff4c14114a6e629b00e000976 has more than one definition
2018-02-17 00:07:57,095 INFO 20 [openedx.core.djangoapps.content.course_overviews.models] models.py:147 - Updating course overview for course-v1:edX+DemoX+Demo_Course.
2018-02-17 00:07:57,132 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function listen_for_course_publish at 0x7f9c67a3f410> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:57,134 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function listen_for_course_publish at 0x7f9c4c9adaa0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:57,135 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _update_block_structure_on_course_publish at 0x7f9c4c9b36e0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:57,136 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fd578> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:57,138 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fda28> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:57,139 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function trigger_update_xblocks_cache_task at 0x7f9c4c7fdb18> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
2018-02-17 00:07:57,141 INFO 20 [xmodule.modulestore.django] django.py:207 - Sent course_published signal to <function _listen_for_course_publish at 0x7f9c4c7fd8c0> with kwargs {'course_key': CourseLocator('edX', 'DemoX', 'Demo_Course', None, None)}. Response was: None
Seeding forum roles for course course-v1:edX+DemoX+Demo_Course

[Windows] Getting ": invalid option" when running with local built images

Hello
1st Thank you for this project.
Issue: Can't run the openedx if the image that i'm using is built locally.

Steps tp reproduce the error:
1. Build openedx image with a custom tag
2. Change the tags in the docker-compose
3. Run make all

Error Message

Configuration files were successfuly generated. You may now run the app containers.
docker-compose run --rm -e USERID=666 -e SETTINGS=universal.production lms bash -c "wait-for-> > greenlight.sh && ./manage.py lms migrate"
Starting edx.prod.mongodb ... done
Starting edx.prod.memcached ... done
Starting edx.prod.elasticsearch ... done
Starting edx.prod.rabbitmq ... done
Starting edx.prod.mysql ... done
Starting edx.prod.forum ... done
: invalid option
make: *** [migrate] Error 1

Maybe the problem is related with one of the following warning when building the image

debconf: delaying package configuration, since apt-utils is not installed

Get:146 http://archive.ubuntu.com/ubuntu xenial/universe amd64 npm all 3.5.2-0ubuntu4 [1586 kB]
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Fetched 32.0 MB in 24s (1331 kB/s)

Cloning https://github.com/edx/codejail.git (to a320d43ce6b9c93b17636b2491f724d9e433be47) to /openedx/venv/src/codejail
Could not find a tag or branch 'a320d43ce6b9c93b17636b2491f724d9e433be47', assuming commit.
Requested codejail==0.0 from git+https://github.com/edx/codejail.git@a320d43ce6b9c93b17636b2491f724d9e433be47#egg=codejail==0.0 (from -r requirements/edx/github.txt (line 73)), but installing version None

Step 12/25 : RUN pip install --src ../venv/src -r requirements/edx/base.txt
---> Running in 71844a0d8b40
DEPRECATION: --allow-external has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect.
DEPRECATION: --allow-unverified has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect.

Requested meliae==0.4.0 from https://files.pythonhosted.org/packages/98/c6/7fa12062ddfe1732d43b34b64a3fe99da958a88fa1d8b7550fe386a9ca01/meliae-0.4.0.tar.gz#sha256=976519ab02aaa6a8fb5f596dc4dd9f64fc9510b00e054979566e51c9be7cec99 (from -r requirements/edx/base.txt (line 75)), but installing version None

Any idea how to overcome this issue?
Thanks!

npm ERR! Please try running this command again as root/Administrator.

It appears that the paver update_assets lms command is failing because it's saying that I need to run as root/administrator. Is that correct? When I run the make lms command, it appears to login me in as the openedx user.

$ make lms
docker-compose run --rm -e USERID="$(id -u)" -e SETTINGS=production -p 8000:8000 lms bash
Starting openedx-docker_memcached_1 ... done
Starting openedx-docker_rabbitmq_1  ... done
Starting openedx-docker_mongodb_1   ... done
Starting openedx-docker_smtp_1      ... done
Starting openedx-docker_mysql_1     ... done
creating new user 'openedx' with UID 501
bash: /root/.bashrc: Permission denied
openedx@88c9bb8a746e:/openedx/edx-platform$ paver update_assets lms --settings=development
---> pavelib.assets.update_assets
---> pavelib.prereqs.install_node_prereqs
test `npm config get registry` = "https://registry.npmjs.org/" || (echo setting registry; npm config set registry https://registry.npmjs.org/)
npm install
npm ERR! Linux 4.9.87-linuxkit-aufs
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2
npm ERR! path /root/.npm/sinon/1.17.7/package
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/root/.npm/sinon/1.17.7/package'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/root/.npm/sinon/1.17.7/package']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/root/.npm/sinon/1.17.7/package',
npm ERR!   parent: 'edx-ui-toolkit' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /openedx/edx-platform/npm-debug.log


Captured Task Output:
---------------------

---> pavelib.assets.update_assets
---> pavelib.prereqs.install_node_prereqs
test `npm config get registry` = "https://registry.npmjs.org/" || (echo setting registry; npm config set registry https://registry.npmjs.org/)
npm install

Build failed running pavelib.assets.update_assets: Subprocess return code: 243

Makefile:22: recipe for target 'update' failed

Hi @regisb

I tried with this repo, executing the following commands:

$ git clone https://github.com/regisb/openedx-docker.git
$ cd openedx-docker/
$ make all
./configure
Your website domain name for students (LMS) (default: "www.myopenedx.com"): http://lms.kimetrics.com
Your website domain name for teachers (CMS) (default: "studio.myopenedx.com"): http://studio.kimetrics.com
Secret key -- if you don't know what this is, you can safely accept the default (default: "DA7y8xAbwUydrCnFsG93IgeG"): 
Platform name/title (default: "My Open edX"): Kimetrics - Smart field management - Cursos en linea
MySQL database name (default: "openedx"): 
MySQL database username (default: "openedx"): 
MySQL database password (default: "password"): 
MongoDb database name (default: "openedx"): 

Configuration values were saved to  config/openedx/config.json
Generated config file config/openedx/lms.env.json (from template config/openedx/templates/lms.env.json.templ)
Generated config file config/openedx/cms.env.json (from template config/openedx/templates/cms.env.json.templ)
Generated config file config/openedx/lms.auth.json (from template config/openedx/templates/lms.auth.json.templ)
Generated config file config/openedx/cms.auth.json (from template config/openedx/templates/cms.auth.json.templ)
Generated config file mysql/config/username (from template mysql/config/templates/username.templ)
Generated config file mysql/config/password (from template mysql/config/templates/password.templ)
Generated config file mysql/config/database (from template mysql/config/templates/database.templ)
Generated config file config/nginx/lms.conf (from template config/nginx/templates/lms.conf.templ)
Generated config file config/nginx/cms.conf (from template config/nginx/templates/cms.conf.templ)

Configuration files were successfuly generated. You may now run the app containers.
docker-compose pull
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/
Makefile:22: recipe for target 'update' failed
make: *** [update] Error 1

Any idea how fixed this error?

Proofread

Ping @gsong @OmarIthawi @WolfieZero :)

This is a work-in-progress that stems from my install-from-scratch manual. The idea is to launch a minimal, docker-based LMS.

After running docker-compose up --build you should have a working lms listening on http://myopenedx.com. You will have to patch your /etc/hosts file to access it.

In order to disable migrations and assets generation, just modifiy the environment variables in docker-compose.yml.

Since I know close to nothing about Docker, I would really appreciate it if you could give some pointers on good practices and any stupid mistake I might have made.

Error on xqueue and xqueue-consumer.

Hi,
First of all a big thank you for putting this together.
I cloned the Git repository a few minutes ago and have python,docker (17.12.1) and docker-compose (1.21.2) running on Ubuntu 18.04
Getting these errors when doing a make all
ERROR: for xqueue_consumer pull access denied for regis/openedx-xqueue, repository does not exist or may require 'docker login'

ERROR: for xqueue pull access denied for regis/openedx-xqueue, repository does not exist or may require 'docker login'
ERROR: pull access denied for regis/openedx-xqueue, repository does not exist or may require 'docker login'
Do let me know if you need any more debug information.

Default email sender addresses are all '@example.com'

The following addresses should be overridden:

DEFAULT_FROM_EMAIL = '[email protected]'
DEFAULT_FEEDBACK_EMAIL = '[email protected]'
SERVER_EMAIL = '[email protected]'
TECH_SUPPORT_EMAIL = '[email protected]'
CONTACT_EMAIL = '[email protected]'
BUGS_EMAIL = '[email protected]'
UNIVERSITY_EMAIL = '[email protected]'
PRESS_EMAIL = '[email protected]'
PAYMENT_SUPPORT_EMAIL = '[email protected]'
BULK_EMAIL_DEFAULT_FROM_EMAIL = '[email protected]'
API_ACCESS_MANAGER_EMAIL = '[email protected]'
API_ACCESS_FROM_EMAIL = '[email protected]'

"@example.com" should be replaced by the LMS host name.

Build failed running pavelib.assets.update_assets: Subprocess return code: 1

When I try to run paver update_assets cms --settings=development to update the CMS assets, I get the following error. Do I need to run it with USER=1000 make cms instead?

$ make cms
Starting openedx-docker_rabbitmq_1  ... done
Starting openedx-docker_mysql_1     ... done
Starting openedx-docker_smtp_1      ... done
creating new user 'openedx' with UID 501done
openedx@4d121efb7bef:~/edx-platform$ paver update_assets cms --settings=development
---> pavelib.assets.update_assets
---> pavelib.prereqs.install_node_prereqs
test `npm config get registry` = "https://registry.npmjs.org/" || (echo setting registry; npm config set registry https://registry.npmjs.org/)
npm install
npm WARN deprecated [email protected]: This package is unmaintained. Use @sinonjs/formatio instead
[email protected] /openedx/edx-platform
`-- [email protected]
  `-- [email protected]
    +-- [email protected]
    +-- [email protected]
    `-- [email protected]

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN optional Skipping failed optional dependency /karma/chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN [email protected] requires a peer of eslint-plugin-import@^2.7.0 but none was installed.
npm WARN [email protected] requires a peer of eslint@^2.9.0 but none was installed.
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
xmodule_assets common/static/xmodule
		Finished processing xmodule assets.
mkdir_p path('common/static/common/js/vendor')
Copying vendor files into static directory
/bin/cp -rf node_modules/backbone.paginator/lib/backbone.paginator.js common/static/common/js/vendor
/bin/cp -rf node_modules/backbone/backbone.js common/static/common/js/vendor
/bin/cp -rf node_modules/bootstrap/dist/js/bootstrap.js common/static/common/js/vendor
/bin/cp -rf node_modules/hls.js/dist/hls.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery-migrate/dist/jquery-migrate.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery.scrollto/jquery.scrollTo.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery/dist/jquery.js common/static/common/js/vendor
/bin/cp -rf node_modules/moment-timezone/builds/moment-timezone-with-data.js common/static/common/js/vendor
/bin/cp -rf node_modules/moment/min/moment-with-locales.js common/static/common/js/vendor
/bin/cp -rf node_modules/picturefill/dist/picturefill.js common/static/common/js/vendor
/bin/cp -rf node_modules/requirejs/require.js common/static/common/js/vendor
/bin/cp -rf node_modules/tether/dist/js/tether.js common/static/common/js/vendor
/bin/cp -rf node_modules/underscore.string/dist/underscore.string.js common/static/common/js/vendor
/bin/cp -rf node_modules/underscore/underscore.js common/static/common/js/vendor
Copying developer vendor files into static directory
/bin/cp -rf node_modules/sinon/pkg/sinon.js common/static/common/js/vendor
/bin/cp -rf node_modules/squirejs/src/Squire.js common/static/common/js/vendor
---> pavelib.assets.compile_coffeescript
node_modules/.bin/coffee --compile `find /openedx/edx-platform/lms /openedx/edx-platform/cms /openedx/edx-platform/common -type f -name "*.coffee"`
python manage.py lms --settings=development print_settings STATIC_ROOT --format=value 2>/dev/null



Captured Task Output:
---------------------

---> pavelib.assets.update_assets
---> pavelib.prereqs.install_node_prereqs
test `npm config get registry` = "https://registry.npmjs.org/" || (echo setting registry; npm config set registry https://registry.npmjs.org/)
npm install
xmodule_assets common/static/xmodule
mkdir_p path('common/static/common/js/vendor')
/bin/cp -rf node_modules/backbone.paginator/lib/backbone.paginator.js common/static/common/js/vendor
/bin/cp -rf node_modules/backbone/backbone.js common/static/common/js/vendor
/bin/cp -rf node_modules/bootstrap/dist/js/bootstrap.js common/static/common/js/vendor
/bin/cp -rf node_modules/hls.js/dist/hls.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery-migrate/dist/jquery-migrate.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery.scrollto/jquery.scrollTo.js common/static/common/js/vendor
/bin/cp -rf node_modules/jquery/dist/jquery.js common/static/common/js/vendor
/bin/cp -rf node_modules/moment-timezone/builds/moment-timezone-with-data.js common/static/common/js/vendor
/bin/cp -rf node_modules/moment/min/moment-with-locales.js common/static/common/js/vendor
/bin/cp -rf node_modules/picturefill/dist/picturefill.js common/static/common/js/vendor
/bin/cp -rf node_modules/requirejs/require.js common/static/common/js/vendor
/bin/cp -rf node_modules/tether/dist/js/tether.js common/static/common/js/vendor
/bin/cp -rf node_modules/underscore.string/dist/underscore.string.js common/static/common/js/vendor
/bin/cp -rf node_modules/underscore/underscore.js common/static/common/js/vendor
/bin/cp -rf node_modules/sinon/pkg/sinon.js common/static/common/js/vendor
/bin/cp -rf node_modules/squirejs/src/Squire.js common/static/common/js/vendor
---> pavelib.assets.compile_coffeescript
node_modules/.bin/coffee --compile `find /openedx/edx-platform/lms /openedx/edx-platform/cms /openedx/edx-platform/common -type f -name "*.coffee"`
python manage.py lms --settings=development print_settings STATIC_ROOT --format=value 2>/dev/null


Build failed running pavelib.assets.update_assets: Subprocess return code: 1

Using EDX_PLATFORM_SETTINGS=development still results in SETTINGS=production

I set the environment variable EDX_PLATFORM_SETTINGS=development but when I run make lms it appears to still be using SETTINGS=production.

And yes, I have made development.py in both cms/envs and lms/envs directories.

$ export EDX_PLATFORM_PATH=/Users/nateaune/Dropbox/code/natea-edx-platform-ginkgo
$ export EDX_PLATFORM_SETTINGS=development
$ make lms
docker-compose run --rm -e USERID="$(id -u)" -e SETTINGS=production --volume="/Users/nateaune/Dropbox/code/natea-edx-platform-ginkgo:/openedx/edx-platform" -p 8000:8000 lms bash
Starting openedx-docker_rabbitmq_1  ... done
Starting openedx-docker_smtp_1      ... done
Starting openedx-docker_mongodb_1   ... done
Starting openedx-docker_mysql_1     ... done
creating new user 'openedx' with UID 501
chown: changing ownership of '/openedx/edx-platform/common/static/edx-pattern-library/fonts': No such file or directory
chown: changing ownership of '/openedx/edx-platform/common/static/edx-pattern-library/js': No such file or directory
chown: changing ownership of '/openedx/edx-platform/common/static/edx-ui-toolkit/js': No such file or directory
make: *** [lms] Error 1

mysql: Access denied for user 'root'

LX-MacBook-Pro:openedx-docker lx$ make all
docker run --rm -it --volume="/Users/liuxin/Documents/Github/openedx-docker/config:/openedx/config" \
		-e USERID=$(id -u) -e SILENT= -e ACTIVATE_HTTPS= -e ACTIVATE_XQUEUE= \
		regis/openedx-configurator
creating new user 'openedx' with UID 501

====================================
      Interactive configuration 
====================================
Your website domain name for students (LMS). (default: "www.elearning.cn"): 
Your website domain name for teachers (CMS). (default: "course.elearning.cn"): 
Platform name/title (default: "Elearning"): 

Configuration values were saved to  /openedx/config/config.json
Generated file ./config/openedx/lms.env.json from template ./config/openedx/templates/lms.env.json.templ
Generated file ./config/openedx/cms.env.json from template ./config/openedx/templates/cms.env.json.templ
Generated file ./config/openedx/lms.auth.json from template ./config/openedx/templates/lms.auth.json.templ
Generated file ./config/openedx/cms.auth.json from template ./config/openedx/templates/cms.auth.json.templ
Generated file ./config/openedx/provision.sh from template ./config/openedx/templates/provision.sh.templ
Generated file ./config/xqueue/universal.py from template ./config/xqueue/templates/universal.py.templ
Generated file ./config/mysql/auth.env from template ./config/mysql/templates/auth.env.templ
Generated file ./config/nginx/lms.conf from template ./config/nginx/templates/lms.conf.templ
Generated file ./config/nginx/cms.conf from template ./config/nginx/templates/cms.conf.templ
Generated file ./config/android/universal.yaml from template ./config/android/templates/universal.yaml.templ
Generated file ./config/letsencrypt/certonly.sh from template ./config/letsencrypt/templates/certonly.sh.templ
docker-compose -f docker-compose.yml pull
Pulling mongodb       ... done
Pulling smtp          ... done
Pulling rabbitmq      ... done
Pulling nginx         ... done
Pulling elasticsearch ... done
Pulling forum         ... done
Pulling mysql         ... done
Pulling memcached     ... done
Pulling lms           ... done
Pulling lms_worker    ... done
Pulling cms           ... done
Pulling cms_worker    ... done
docker pull regis/openedx-configurator:hawthorn
hawthorn: Pulling from regis/openedx-configurator
Digest: sha256:d2d6b00a08498feff7c16b00e2808ea18e41362afdd7435b82573f041dcee7b2
Status: Image is up to date for regis/openedx-configurator:hawthorn
docker-compose -f docker-compose.yml run --rm lms bash -c "dockerize -wait tcp://mysql:3306 -timeout 20s && bash /openedx/config/provision.sh"
Starting openedx-docker_rabbitmq_1      ... done
Starting openedx-docker_memcached_1     ... done
Starting openedx-docker_smtp_1          ... done
Starting openedx-docker_mongodb_1       ... done
Starting openedx-docker_forum_1         ... done
2018/08/24 05:07:46 Waiting for: tcp://mysql:3306
2018/08/24 05:07:46 Connected to tcp://mysql:3306
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'172.19.0.8' (using password: YES)
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'172.19.0.8' (using password: YES)
make: *** [provision] Error 1

Hi regisb, is there something i can try to fix it? Thanks.

Development in OpenEdx

I am running openedx in standard development settings in my localhost however if I want to make a change in my code should i re run :
paver update_assets lms --settings=universal.development
./manage.py lms runserver 0.0.0.0:8000

or should I also restart my docker ? Both take lots of time so I assume making code development with this kind of setting is very hard and time consuming. Is there any easier way to do the development ? I want to make a change in my folder openedx-docker then save and then refresh the url in my localhost to see the changes. Is it possible? Thanks.

/usr/bin/env: ‘python’: No such file or directory

Hi, I cannot seem to get past make all...

----------------------------------------------
root@foobar:~/openedx-docker# make all
./configure
/usr/bin/env: ‘python’: No such file or directory
Makefile:19: recipe for target 'configure' failed
make: *** [configure] Error 127
----------------------------------------------

Running a fresh install of Ubuntu 16.04.4 x64 on Digital Ocean. Docker and Python 3 installed. Suggestions? much appreciated.

FileNotFoundError: [Errno 2] No such file or directory: './config/openedx/templates/lms.env.json.templ'

I've made a command sudo make all
And get this:

docker run --rm -it --volume="/config:/openedx/config" \
	-e USERID=$(id -u) -e SILENT= -e ACTIVATE_HTTPS= -e ACTIVATE_XQUEUE= \
	regis/openedx-configurator

====================================
      Interactive configuration 
====================================
Your website domain name for students (LMS). (default: "www.myopenedx.com"): 
Your website domain name for teachers (CMS). (default: "studio.myopenedx.com"): 
Platform name/title (default: "My Open edX"): 

Configuration values were saved to  /openedx/config/config.json
Traceback (most recent call last):
  File "./configure.py", line 156, in <module>
    main()
  File "./configure.py", line 77, in main
    args.func(args)
  File "./configure.py", line 135, in substitute
    with codecs.open(args.src, encoding='utf-8') as fi:
  File "/usr/lib/python3.6/codecs.py", line 897, in open
    file = builtins.open(filename, mode, buffering)
FileNotFoundError: [Errno 2] No such file or directory: './config/openedx/templates/lms.env.json.templ'
Makefile:32: recipe for target 'configure' failed
make: *** [configure] Error 1

What the problem? And actually ./config/openedx/templates/lms.env.json.templ' is exist and it's on it place.

standard_init_linux.go:178: exec user process caused "exec format error"

Pls help

Starting vklass_elasticsearch_1 ...
Starting vklass_memcached_1 ...
Starting vklass_mysql_1 ... h_1 ... done
Starting vklass_mysql_1 ... done
Starting vklass_rabbitmq_1 ... done
standard_init_linux.go:178: exec user process caused "exec format error"
Makefile:25: recipe for target 'provision' failed
make: *** [provision] Error 1

creating new user 'openedx' with UID 0 on make migrate

I have been trying to deploy our stack on a Ubuntu machine on the cloud. When I try to issue a make migrate command i get the following error:

docker-compose run --rm -e USERID="$(id -u)" -p 8000:8000 lms bash -c "wait-for-greenlight.sh && ./manage.py lms migrate"
Starting openedxdocker_rabbitmq_1 ...
Starting openedxdocker_smtp_1 ... done
Starting openedxdocker_mongodb_1 ... done
Starting openedxdocker_memcached_1 ... done
creating new user 'openedx' with UID 0
useradd: UID 0 is not unique
Makefile:25: recipe for target 'migrate' failed
make: *** [migrate] Error 4

Any help would be much appreciated.

With Regards,
Shashi Kiran G M

Cannot access CMS

hello sir;

Thanks for your efforts

I am totally new to open edx and python.
I followed your steps and the lms is running at: localhost
but the studio is running at all, i could not reach it by any way, even through the lms (view grading in studio) I received nothing.

can help me please
Thanks in advance

EDIT (@regisb): please fill the form below.

Steps to reproduce

Include the exact command that you are running and that is causing an error. In case of a web error, include the URL of the page that is causing the error.

Unexpected behavior

Include the full, exact output from the command that is causing your issue. Also include relevant error logs; for instance, to debug the LMS take a look at the files in data/lms/logs.

Additional info

Include the output of the make info command.

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

Hi @regisb

When I trying to done the installation with make all command, it report the following error:

$ make all
./configure
Your website domain name for students (LMS) (default: "http://lms.kimetrics.com"): 
Your website domain name for teachers (CMS) (default: "http://studio.kimetrics.com"): 
Secret key -- if you don't know what this is, you can safely accept the default (default: "DA7y8xAbwUydrCnFsG93IgeG"): 
Platform name/title (default: "Kimetrics - Smart field management - Cursos en linea"): 
MySQL database name (default: "openedx"): 
MySQL database username (default: "openedx"): 
MySQL database password (default: "password"): 
MongoDb database name (default: "openedx"): 

Configuration values were saved to  config/openedx/config.json
Generated config file config/openedx/lms.env.json (from template config/openedx/templates/lms.env.json.templ)
Generated config file config/openedx/cms.env.json (from template config/openedx/templates/cms.env.json.templ)
Generated config file config/openedx/lms.auth.json (from template config/openedx/templates/lms.auth.json.templ)
Generated config file config/openedx/cms.auth.json (from template config/openedx/templates/cms.auth.json.templ)
Generated config file mysql/config/username (from template mysql/config/templates/username.templ)
Generated config file mysql/config/password (from template mysql/config/templates/password.templ)
Generated config file mysql/config/database (from template mysql/config/templates/database.templ)
Generated config file config/nginx/lms.conf (from template config/nginx/templates/lms.conf.templ)
Generated config file config/nginx/cms.conf (from template config/nginx/templates/cms.conf.templ)

Configuration files were successfuly generated. You may now run the app containers.
docker-compose pull
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Makefile:22: recipe for target 'update' failed
make: *** [update] Error 1

Docker Info

$ sudo docker info
Containers: 7
 Running: 5
 Paused: 0
 Stopped: 2
Images: 9
Server Version: 18.03.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-1049-aws
Operating System: Ubuntu 16.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.858GiB
Name: ip-172-30-4-230
ID: 4OPZ:VZMZ:264Z:YTR7:QYD7:UMFV:ETRW:CBOQ:MJHQ:QJ77:7FRP:YTWD
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support

Docker Status

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-05-07 14:53:08 UTC; 2 weeks 1 days ago
     Docs: https://docs.docker.com
 Main PID: 28963 (dockerd)
    Tasks: 95
   Memory: 445.7M
      CPU: 6h 12min 39.694s
   CGroup: /system.slice/docker.service
           ├─ 5332 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.18.0.4 -container-port 8080
           ├─ 5339 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/84a
           ├─ 9021 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/9ad
           ├─ 9161 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5555 -container-ip 172.18.0.3 -container-port 5555
           ├─ 9216 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/f6e
           ├─ 9418 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/2a0
           ├─ 9554 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/1e4
           ├─28963 /usr/bin/dockerd -H fd://
           └─28971 docker-containerd --config /var/run/docker/containerd/containerd.toml

May 15 21:44:12 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:12Z" level=info msg="shim reaped" id=6caa43eac2cda83d2cd7dc8b1651e425
May 15 21:44:12 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:12.246789088Z" level=info msg="ignoring event" module=libcontainerd n
May 15 21:44:24 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:24Z" level=info msg="shim docker-containerd-shim started" address="/c
May 15 21:44:25 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:25Z" level=info msg="shim docker-containerd-shim started" address="/c
May 15 21:44:25 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:25Z" level=info msg="shim docker-containerd-shim started" address="/c
May 15 21:44:28 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:28Z" level=info msg="shim docker-containerd-shim started" address="/c
May 15 21:44:31 ip-172-30-4-230 dockerd[28963]: time="2018-05-15T21:44:31Z" level=info msg="shim docker-containerd-shim started" address="/c
May 23 00:41:23 ip-172-30-4-230 dockerd[28963]: time="2018-05-23T00:41:23Z" level=info msg="shim reaped" id=84a2f012cdf1424d6a391d42e872c0ed
May 23 00:41:23 ip-172-30-4-230 dockerd[28963]: time="2018-05-23T00:41:23.478905921Z" level=info msg="ignoring event" module=libcontainerd n
May 23 00:41:24 ip-172-30-4-230 dockerd[28963]: time="2018-05-23T00:41:24Z" level=info msg="shim docker-containerd-shim started" address="/c

I added my user to docker user group:

$ sudo usermod -aG docker ${USER}

I rerun the command, it still continue the error, then I tested adding sudo prefix and fixed the error, like this:

$ sudo make all

Running on HTTPS and Production

Dear Regis,
How can we run this deployment on SSL/Https. Also I have to run edx on production server, would opened-docker based deployment suffice or are any additional servers like nginx/apache2 required.

With Regards,
Shashi Kiran G M

Avoid rebuilding image to add new XBlocks?

I wanted to test out a new XBlock, so I added a new file to the requirements/edx directory:
https://github.com/natea/edx-platform/blob/natea/testing/requirements/edx/appsembler.txt

And changed these lines in the Dockerfile:

## Checkout edx-platform code
RUN git clone https://github.com/natea/edx-platform.git --branch natea/testing --depth 1 .

# Install python requirements
RUN pip install -r requirements/edx/pre.txt
...
RUN pip install -r requirements/edx/appsembler.txt

When I run make build, it sees that it has already checked out edx-platform and it doesn't pip install the new requirements file.

I have to run docker-compose build --no-cache lms cms in order for force a rebuild of the entire image. Is there an easier / faster way to do this?

ImportError: No module named universal.production

Hi @regisb

I have the following error:

ubuntu@ip-172-30-4-230:~/openedx-docker$ make all
./configure
Your website domain name for students (LMS) (default: "http://lms.kimetrics.com"): 
Your website domain name for teachers (CMS) (default: "http://studio.kimetrics.com"): 
Secret key -- if you don't know what this is, you can safely accept the default (default: "********"): 
Platform name/title (default: "Kimetrics - Smart field management - Cursos en linea"): 
MySQL database name (default: "openedx"): 
MySQL database username (default: "openedx"): 
MySQL database password (default: "password"): 
MongoDb database name (default: "openedx"): 

Configuration values were saved to  config/openedx/config.json
Generated config file config/openedx/lms.env.json (from template config/openedx/templates/lms.env.json.templ)
Generated config file config/openedx/cms.env.json (from template config/openedx/templates/cms.env.json.templ)
Generated config file config/openedx/lms.auth.json (from template config/openedx/templates/lms.auth.json.templ)
Generated config file config/openedx/cms.auth.json (from template config/openedx/templates/cms.auth.json.templ)
Generated config file mysql/config/username (from template mysql/config/templates/username.templ)
Generated config file mysql/config/password (from template mysql/config/templates/password.templ)
Generated config file mysql/config/database (from template mysql/config/templates/database.templ)
Generated config file config/nginx/lms.conf (from template config/nginx/templates/lms.conf.templ)
Generated config file config/nginx/cms.conf (from template config/nginx/templates/cms.conf.templ)

Configuration files were successfuly generated. You may now run the app containers.
docker-compose pull
Pulling memcached  ... done
Pulling mongodb    ... done
Pulling mysql      ... done
Pulling nginx      ... done
Pulling rabbitmq   ... done
Pulling smtp       ... done
Pulling lms        ... done
Pulling cms        ... done
Pulling lms_worker ... done
Pulling cms_worker ... done
docker-compose run --rm -e USERID=$(id -u) -e SETTINGS=universal.production lms bash -c "wait-for-greenlight.sh && ./manage.py lms migrate"
Starting openedx-docker_memcached_1 ... done
Starting openedx-docker_smtp_1      ... done
Starting openedx-docker_mysql_1     ... done
Starting openedx-docker_rabbitmq_1  ... done
Starting openedx-docker_mongodb_1   ... done
creating new user 'openedx' with UID 1000
Checking system...
2018-05-23 19:40:11,824 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:46: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflow doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflow(TimeStampedModel, StatusModel):

2018-05-23 19:40:11,827 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:608: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflowStep doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflowStep(models.Model):

2018-05-23 19:40:11,828 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:749: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflowCancellation doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflowCancellation(models.Model):

2018-05-23 19:40:12,097 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:52: RemovedInDjango19Warning: Model class edxval.models.Profile doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Profile(models.Model):

2018-05-23 19:40:12,098 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:75: RemovedInDjango19Warning: Model class edxval.models.Video doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Video(models.Model):

2018-05-23 19:40:12,099 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:123: RemovedInDjango19Warning: Model class edxval.models.CourseVideo doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class CourseVideo(models.Model, ModelFactoryWithValidation):

2018-05-23 19:40:12,100 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:144: RemovedInDjango19Warning: Model class edxval.models.EncodedVideo doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class EncodedVideo(models.Model):

2018-05-23 19:40:12,101 WARNING 12 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:164: RemovedInDjango19Warning: Model class edxval.models.Subtitle doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Subtitle(models.Model):

2018-05-23 19:40:12,111 WARNING 12 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/video_config/models.py:10: RemovedInDjango19Warning: Model class openedx.core.djangoapps.video_config.models.HLSPlaybackEnabledFlag doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class HLSPlaybackEnabledFlag(ConfigurationModel):

2018-05-23 19:40:12,113 WARNING 12 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/video_config/models.py:51: RemovedInDjango19Warning: Model class openedx.core.djangoapps.video_config.models.CourseHLSPlaybackEnabledFlag doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class CourseHLSPlaybackEnabledFlag(ConfigurationModel):

2018-05-23 19:40:13,196 WARNING 12 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/bookmarks/models.py:41: RemovedInDjango19Warning: Model class openedx.core.djangoapps.bookmarks.models.Bookmark doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Bookmark(TimeStampedModel):

2018-05-23 19:40:13,204 WARNING 12 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/bookmarks/models.py:186: RemovedInDjango19Warning: Model class openedx.core.djangoapps.bookmarks.models.XBlockCache doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class XBlockCache(TimeStampedModel):

2018-05-23 19:40:14,160 INFO 12 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
System check identified no issues (0 silenced).

System is ready \o/
2018-05-23 19:40:17,355 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:46: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflow doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflow(TimeStampedModel, StatusModel):

2018-05-23 19:40:17,357 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:608: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflowStep doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflowStep(models.Model):

2018-05-23 19:40:17,358 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:749: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflowCancellation doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflowCancellation(models.Model):

2018-05-23 19:40:17,445 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:52: RemovedInDjango19Warning: Model class edxval.models.Profile doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Profile(models.Model):

2018-05-23 19:40:17,446 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:75: RemovedInDjango19Warning: Model class edxval.models.Video doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Video(models.Model):

2018-05-23 19:40:17,447 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:123: RemovedInDjango19Warning: Model class edxval.models.CourseVideo doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class CourseVideo(models.Model, ModelFactoryWithValidation):

2018-05-23 19:40:17,448 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:144: RemovedInDjango19Warning: Model class edxval.models.EncodedVideo doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class EncodedVideo(models.Model):

2018-05-23 19:40:17,449 WARNING 131 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:164: RemovedInDjango19Warning: Model class edxval.models.Subtitle doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Subtitle(models.Model):

2018-05-23 19:40:17,453 WARNING 131 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/video_config/models.py:10: RemovedInDjango19Warning: Model class openedx.core.djangoapps.video_config.models.HLSPlaybackEnabledFlag doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class HLSPlaybackEnabledFlag(ConfigurationModel):

2018-05-23 19:40:17,454 WARNING 131 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/video_config/models.py:51: RemovedInDjango19Warning: Model class openedx.core.djangoapps.video_config.models.CourseHLSPlaybackEnabledFlag doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class CourseHLSPlaybackEnabledFlag(ConfigurationModel):

2018-05-23 19:40:18,332 WARNING 131 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/bookmarks/models.py:41: RemovedInDjango19Warning: Model class openedx.core.djangoapps.bookmarks.models.Bookmark doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Bookmark(TimeStampedModel):

2018-05-23 19:40:18,334 WARNING 131 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/bookmarks/models.py:186: RemovedInDjango19Warning: Model class openedx.core.djangoapps.bookmarks.models.XBlockCache doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class XBlockCache(TimeStampedModel):

2018-05-23 19:40:18,947 INFO 131 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Operations to perform:
  Synchronize unmigrated apps: eventtracking_django, gating, links, webpack_loader, course_structure_api, release_util, discussion_api, learner_dashboard, edxnotes, django_sites_extensions, auth_exchange, service_status, web_fragments, coursegraph, sekizai, rest_framework, edxmako, openassessment, datadog, staticbook, common_views, course_wiki, edx_sga, support, enterprise_support, django_object_actions, django_countries, humanize, course_blocks, provider, notification_prefs, thumbnail, xblock, course_experience, mptt, notifier_api, staticfiles, markdownedx, fileupload, plugin_api, course_search, edx_jsme, monitoring, instructor, static_template_view, corsheaders, statici18n, pipeline, simple_history, enrollment, messages, config_models, django_extensions, dashboard, django_nose, debug, mailing, discussion, course_bookmarks
  Apply all migrations: wiki, status, dark_lang, student, video_config, branding, user_api, django_comment_common, redirects, course_overviews, sites, experiments, grades, crawlers, lms_xblock, rss_proxy, bookmarks, waffle_utils, mobile_api, badges, course_groups, database_fixups, integrated_channel, course_modes, sessions, verified_track_content, shoppingcart, block_structure, external_auth, track, contenttypes, splash, workflow, certificates, static_replace, third_party_auth, assessment, sap_success_factors, submissions, oauth_dispatch, oauth2_provider, theming, instructor_task, organizations, edx_oauth2_provider, microsite_configuration, django_notify, celery_utils, api_admin, auth, util, verify_student, catalog, oauth2, site_configuration, social_django, credentials, email_marketing, contentserver, waffle, xblock_django, embargo, commerce, milestones, course_action_state, edx_proctoring, admin, oauth_provider, courseware, programs, djcelery, edxval, teams, credit, django_openid_auth, bulk_email, survey, course_structures, enterprise, cors_csrf, notes, self_paced
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  No migrations to apply.
docker-compose run --rm -e USERID=$(id -u) -e SETTINGS=universal.production cms bash -c "wait-for-greenlight.sh && ./manage.py cms migrate"
Starting openedx-docker_memcached_1 ... done
Starting openedx-docker_smtp_1      ... done
Starting openedx-docker_mysql_1     ... done
Starting openedx-docker_rabbitmq_1  ... done
Starting openedx-docker_mongodb_1   ... done
creating new user 'openedx' with UID 1000
Checking system...
Traceback (most recent call last):
  File "./manage.py", line 111, in <module>
    startup = importlib.import_module(edx_args.startup)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/openedx/edx-platform/cms/startup.py", line 11, in <module>
    from openedx.core.djangoapps.theming.core import enable_theming
  File "/openedx/edx-platform/openedx/core/djangoapps/theming/core.py", line 9, in <module>
    from .helpers import get_themes
  File "/openedx/edx-platform/openedx/core/djangoapps/theming/helpers.py", line 9, in <module>
    from django.contrib.staticfiles.storage import staticfiles_storage
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/storage.py", line 12, in <module>
    from django.core.cache import (
  File "/usr/local/lib/python2.7/dist-packages/django/core/cache/__init__.py", line 34, in <module>
    if DEFAULT_CACHE_ALIAS not in settings.CACHES:
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named universal.production
.Traceback (most recent call last):
  File "./manage.py", line 111, in <module>
    startup = importlib.import_module(edx_args.startup)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/openedx/edx-platform/cms/startup.py", line 11, in <module>
    from openedx.core.djangoapps.theming.core import enable_theming
  File "/openedx/edx-platform/openedx/core/djangoapps/theming/core.py", line 9, in <module>
    from .helpers import get_themes
  File "/openedx/edx-platform/openedx/core/djangoapps/theming/helpers.py", line 9, in <module>
    from django.contrib.staticfiles.storage import staticfiles_storage
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/storage.py", line 12, in <module>
    from django.core.cache import (
  File "/usr/local/lib/python2.7/dist-packages/django/core/cache/__init__.py", line 34, in <module>
    if DEFAULT_CACHE_ALIAS not in settings.CACHES:
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named universal.production

Any idea about what Python library needed installed for fix the ImportError Exception?

prereqs

Hi Régis,
Nice work!
If I understand what "paver install_prereqs" does, it is just doing "pip install" and "npm install". Since you already install the python requirements one by one, I think you could just add:
RUN npm install
I tried it on a devstack I'm working on inspired from your production stack and it.... works.

Adding custom XBlocks

Where to make changes to repo or add additional XBlocks.

Before I was editing /openedx/Dockerfile and adding one of these two lines:

RUN git fetch origin && git checkout markdown && pip install -r requirements/appsembler.txt
RUN pip install -e git+https://github.com/hastexo/markdown-xblock.git@master#egg=markdown-xblock

Is this the best place to make these changes, or is it enough to have set this as an environment variable:

export EDX_PLATFORM_PATH=/Users/nateaune/Dropbox/code/natea-edx-platform-ginkgo

Which has already has the markdown branch checked out.

It seems like I still need a step to either install my custom requirements.txt file or pip install the custom XBlock that I want to test.

What is the recommended way to do this without having to make local commits to the Dockerfile?

/usr/bin/env: ‘python’: No such file or directory

Hello

When I run the following command:
sudo make all

I get this error:
./configure
/usr/bin/env: ‘python’: No such file or directory
Makefile:19: recipe for target 'configure' failed
make: *** [configure] Error 127

This is what I get when I run make info

uname -a
Linux ubuntu-s-2vcpu-4gb-lon1-01 4.4.0-127-generic #153-Ubuntu SMP Sat May 19 10:58:46 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:17:20 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:15:30 2018
OS/Arch: linux/amd64
Experimental: false

docker-compose --version
docker-compose version 1.18.0, build 8dd22a9

python --version
make: python: Command not found
Makefile:59: recipe for target 'info' failed
make: *** [info] Error 127

Any ideas?

Translate open edx

Hi. I have a doubt.
Can edX be translated permanently into another language? the docker commpose and be able to, how to do it?

Thanks.

Migrations error

Hello, great job! but when I try to install with make all I have this error:

...
2018-03-25 02:43:28,635 INFO 131 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Operations to perform:
  Synchronize unmigrated apps: eventtracking_django, gating, links, webpack_loader, course_structure_api, release_util, discussion_api, learner_dashboard, edxnotes, django_sites_extensions, auth_exchange, service_status, web_fragments, coursegraph, sekizai, rest_framework, edxmako, openassessment, datadog, staticbook, common_views, course_wiki, edx_sga, support, enterprise_support, django_object_actions, django_countries, humanize, course_blocks, provider, notification_prefs, thumbnail, xblock, course_experience, mptt, notifier_api, staticfiles, markdownedx, fileupload, plugin_api, course_search, edx_jsme, monitoring, instructor, static_template_view, corsheaders, statici18n, pipeline, simple_history, enrollment, messages, config_models, django_extensions, dashboard, django_nose, debug, mailing, discussion, course_bookmarks
  Apply all migrations: wiki, status, dark_lang, student, video_config, branding, user_api, django_comment_common, redirects, course_overviews, sites, experiments, grades, crawlers, lms_xblock, rss_proxy, bookmarks, waffle_utils, mobile_api, badges, course_groups, database_fixups, integrated_channel, course_modes, sessions, verified_track_content, shoppingcart, block_structure, external_auth, track, contenttypes, splash, workflow, certificates, static_replace, third_party_auth, assessment, sap_success_factors, submissions, oauth_dispatch, oauth2_provider, theming, instructor_task, organizations, edx_oauth2_provider, microsite_configuration, django_notify, celery_utils, api_admin, auth, util, verify_student, catalog, oauth2, site_configuration, social_django, credentials, email_marketing, contentserver, waffle, xblock_django, embargo, commerce, milestones, course_action_state, edx_proctoring, admin, oauth_provider, courseware, programs, djcelery, edxval, teams, credit, django_openid_auth, bulk_email, survey, course_structures, enterprise, cors_csrf, notes, self_paced
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states...bash: line 1:   131 Killed                  ./manage.py lms --settings=production migrate
make: *** [migrate] Error 137
...

And the same when just run make migrate

My software and hardware are:

Docker versions:
Engine: 17.12.0-ce
Compose: 1.18.0

SO: macOS High Sierra
Version: 10.13.3
CPU: 2.2 GHz Intel Core i7
RAM: 16 GB 1600 MHz DDR3

ERROR: An HTTP request took too long to complete.

Since following the instructions to set up a local development environment, and attempting to restart the containers with make up, I'm now getting this error:

$ make up
docker-compose up
openedx-docker_mysql_1 is up-to-date
openedx-docker_mongodb_1 is up-to-date
Recreating openedx-docker_nginx_1 ...
openedx-docker_smtp_1 is up-to-date
openedx-docker_memcached_1 is up-to-date
Recreating openedx-docker_nginx_1 ... done
Recreating openedx-docker_lms_1   ...
Recreating openedx-docker_cms_1   ...

ERROR: for openedx-docker_lms_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for openedx-docker_cms_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for lms  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for cms  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
make: *** [up] Error 1

error: [Errno 111] Connection refused when sending registration email

I can see the logs for the openedxdocker_lms container that it's attempting to send the registration emails, but it's getting a connection refused:

2018-02-16 23:32:23,197 INFO 1 [celery.worker.consumer] consumer.py:479 - Connected to amqp://guest:**@rabbitmq:5672//
2018-02-16 23:32:23,209 INFO 1 [celery.worker.consumer] consumer.py:567 - mingle: searching for neighbors
2018-02-16 23:32:24,221 INFO 1 [celery.worker.consumer] consumer.py:585 - mingle: all alone
2018-02-16 23:32:24,243 WARNING 1 [celery.redirected] log.py:282 - [email protected].%8fffbfe952ed ready.
2018-02-16 23:56:32,936 INFO 1 [celery.worker.strategy] strategy.py:55 - Received task: student.tasks.send_activation_email[e629b21c-b3f6-41d7-a851-3405a704472c]
2018-02-16 23:56:32,998 ERROR 120 [edx.celery.task] tasks.py:48 - Unable to send activation email to user from "[email protected]" to "[email protected]"
Traceback (most recent call last):
  File "/openedx/edx-platform/common/djangoapps/student/tasks.py", line 23, in send_activation_email
    mail.send_mail(subject, message, from_address, [dest_addr], fail_silently=False)
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/__init__.py", line 62, in send_mail
    return mail.send()
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/message.py", line 303, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 100, in send_messages
    new_conn_created = self.open()
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 58, in open
    self.connection = connection_class(self.host, self.port, **connection_params)
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 575, in create_connection
    raise err
error: [Errno 111] Connection refused
2018-02-16 23:56:33,026 ERROR 1 [celery.worker.job] log.py:282 - Task student.tasks.send_activation_email[e629b21c-b3f6-41d7-a851-3405a704472c] raised unexpected: Exception()
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 438, in __protected_call__
    return self.run(*args, **kwargs)
  File "/openedx/edx-platform/common/djangoapps/student/tasks.py", line 50, in send_activation_email
    raise Exception
Exception

When I look at the logs of the openedxdocker_smtp container, it appears to be listening on port 25.

+ sed -ri '
s/^#?(dc_local_interfaces)=.*/\1='\''[0.0.0.0]:25 ; [::0]:25'\''/;
s/^#?(dc_other_hostnames)=.*/\1='\'''\''/;
s/^#?(dc_relay_nets)=.*/\1='\''172.18.0.3\/16'\''/;
s/^#?(dc_eximconfig_configtype)=.*/\1='\''internet'\''/;
' /etc/exim4/update-exim4.conf.conf
+ update-exim4.conf -v
using non-split configuration scheme from /etc/exim4/exim4.conf.template
    1 LOG: MAIN
    1   exim 4.84_2 daemon started: pid=1, -q15m, listening for SMTP on port 25 (IPv6 and IPv4)

Any idea why it's unable to connect to the SMTP container?

Can't connect to MySQL server on 'mysql' (111)

I run the make command and at the end, I see this traceback:

2018-02-10 01:14:26,742 INFO 122 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
Traceback (most recent call last):
  File "./manage.py", line 116, in <module>
    execute_from_command_line([sys.argv[0]] + django_args)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
    self.check()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
    include_deployment_checks=include_deployment_checks,
  File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
    errors.extend(model.check(**kwargs))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
    errors.extend(cls._check_fields(**kwargs))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
    errors.extend(field.check(**kwargs))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
    errors = super(AutoField, self).check(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
    errors.extend(self._check_backend_specific_checks(**kwargs))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
    return connection.validation.check_field(self, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
    field_type = field.db_type(connection)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
    return connection.data_types[self.get_internal_type()] % data
  File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
    if self.features.supports_microsecond_precision:
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
    return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
    with self.temporary_connection():
  File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
    cursor = self.cursor()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
    cursor = self.make_cursor(self._cursor())
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    self.connect()
  File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    self.connect()
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
    conn = Database.connect(**conn_params)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'mysql' (111)")
make: *** [migrate] Error 1

When I scroll back up the traceback, I see this:

Pulling mysql (mysql:5.6.36)...
5.6.36: Pulling from library/mysql
9f0706ba7422: Pull complete
2290e155d2d0: Pull complete
547981b8269f: Pull complete
2c9d42ed2f48: Pull complete
a50168a1b927: Pull complete
414da6fabf18: Pull complete
332ddcfaeff4: Pull complete
43e9a87d0a54: Pull complete
27dcfa818ff7: Pull complete
067b6cd0ea1c: Pull complete
62f66393bcf1: Pull complete
Digest: sha256:55cbc591a7ebc1c47458c97b8edbd2693c9e4ec5666f1ad8202a86a2e639e326
Status: Downloaded newer image for mysql:5.6.36
Pulling memcached (memcached:1.4.38)...
1.4.38: Pulling from library/memcached
f5cc0ee7a6f6: Pull complete
ce7ee474d4e2: Pull complete
1f60705a3644: Pull complete
1864db441db8: Pull complete
90398aacff88: Pull complete
Digest: sha256:d83af2b8bd40c12e0bc91c969bed27c7a1631939c7bb73f95f11dfe00395d224
Status: Downloaded newer image for memcached:1.4.38
Creating openedxdocker_rabbitmq_1 ... 
Creating openedxdocker_smtp_1 ... 
Creating openedxdocker_mysql_1 ... 
Creating openedxdocker_mongodb_1 ... 
Creating openedxdocker_memcached_1 ... 
Creating openedxdocker_rabbitmq_1
Creating openedxdocker_memcached_1
Creating openedxdocker_mysql_1
Creating openedxdocker_smtp_1
Creating openedxdocker_memcached_1 ... done
Waiting for mysql database
2018-02-10 01:14:19,055 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:46: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflow doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflow(TimeStampedModel, StatusModel):

2018-02-10 01:14:19,058 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:608: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflowStep doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflowStep(models.Model):

2018-02-10 01:14:19,061 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/openassessment/workflow/models.py:749: RemovedInDjango19Warning: Model class openassessment.workflow.models.AssessmentWorkflowCancellation doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class AssessmentWorkflowCancellation(models.Model):

2018-02-10 01:14:19,252 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:52: RemovedInDjango19Warning: Model class edxval.models.Profile doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Profile(models.Model):

2018-02-10 01:14:19,254 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:75: RemovedInDjango19Warning: Model class edxval.models.Video doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Video(models.Model):

2018-02-10 01:14:19,255 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:123: RemovedInDjango19Warning: Model class edxval.models.CourseVideo doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class CourseVideo(models.Model, ModelFactoryWithValidation):

2018-02-10 01:14:19,257 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:144: RemovedInDjango19Warning: Model class edxval.models.EncodedVideo doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class EncodedVideo(models.Model):

2018-02-10 01:14:19,259 WARNING 8 [py.warnings] base.py:116 - /usr/local/lib/python2.7/dist-packages/edxval/models.py:164: RemovedInDjango19Warning: Model class edxval.models.Subtitle doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Subtitle(models.Model):

2018-02-10 01:14:19,271 WARNING 8 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/video_config/models.py:10: RemovedInDjango19Warning: Model class openedx.core.djangoapps.video_config.models.HLSPlaybackEnabledFlag doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class HLSPlaybackEnabledFlag(ConfigurationModel):

2018-02-10 01:14:19,274 WARNING 8 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/video_config/models.py:51: RemovedInDjango19Warning: Model class openedx.core.djangoapps.video_config.models.CourseHLSPlaybackEnabledFlag doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class CourseHLSPlaybackEnabledFlag(ConfigurationModel):

2018-02-10 01:14:20,377 WARNING 8 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/bookmarks/models.py:41: RemovedInDjango19Warning: Model class openedx.core.djangoapps.bookmarks.models.Bookmark doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class Bookmark(TimeStampedModel):

2018-02-10 01:14:20,380 WARNING 8 [py.warnings] base.py:116 - /openedx/edx-platform/openedx/core/djangoapps/bookmarks/models.py:186: RemovedInDjango19Warning: Model class openedx.core.djangoapps.bookmarks.models.XBlockCache doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
  class XBlockCache(TimeStampedModel):

2018-02-10 01:14:21,489 INFO 8 [dd.dogapi] dog_stats_api.py:66 - Initializing dog api to use statsd: localhost, 8125
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql' (111)

mysql database ready

pkg_resources.DistributionNotFound: The 'XModule' distribution was not found and is required by the application

When I run the update_assets command in the developer environment, I get the following error:

$ paver update_assets lms --settings=development
...
xmodule_assets common/static/xmodule
Traceback (most recent call last):
  File "/usr/local/bin/xmodule_assets", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3141, in <module>
    @_call_aside
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3125, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3154, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 666, in _build_master
    ws.require(__requires__)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 984, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 870, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'XModule' distribution was not found and is required by the application


Captured Task Output:
---------------------

---> pavelib.assets.update_assets
---> pavelib.prereqs.install_node_prereqs
test `npm config get registry` = "https://registry.npmjs.org/" || (echo setting registry; npm config set registry https://registry.npmjs.org/)
npm install
xmodule_assets common/static/xmodule

Build failed running pavelib.assets.update_assets: Subprocess return code: 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.