Customizing openedx edx-platform

Hello everyone,

I need your recommendation and suggestion on what to do after customizing openedx/edx-platform

tutor, version 13.1.1
open-release/maple.1

First Way, I did copy the contents of a container using bindmount

tutor dev bindmount lms /openedx/edx-platform
tutor dev runserver --volume=/openedx/edx-platform lms

should I now after customizing edx-platform push the volumes/edx-platform which has been created after using bindmount command to new GitHub repo,so I can use it by to build custom image ?

tutor images build \
-a EDX_PLATFORM_REPOSITORY=https://github.com/username/edx-platform.git \
-a EDX_PLATFORM_VERSION=my_branch \
openedx

Second Way, instead of copying the content using bindmount,I did fork the open-edx reop then I created my own branch based on open-release/maple.1 tag using the command :
tutor config printvalue OPENEDX_COMMON_VERSION

then i did follow the instruction on how to set it up after forking :

# Run bash in the lms container
tutor dev run [--volume=...] lms bash

# Compile local python requirements
pip install --requirement requirements/edx/development.txt

# Install nodejs packages in node_modules/
npm install

# Rebuild static assets
openedx-assets build --env=dev

Using this way i can bindmount to my custom repo and do customizing then push my code to GitHub branch then rebuild the image again using my custom repo

tutor images build \
-a EDX_PLATFORM_REPOSITORY=https://github.com/username/edx-platform.git \
-a EDX_PLATFORM_VERSION=my_branch \
openedx

however, I faced some problems when i used this way when i wanted to work on dev i had to build the dev image “openedx-dev” with the command
tutor dev dc build lms
this image did miss a styling , so i though this is might be because i used a forked repo !

Third Way, running a different openedx Docker image

tutor config save --set DOCKER_IMAGE_OPENEDX=docker.io/myusername/openedx:mytag
tutor images build openedx
tutor images push openedx

I did not try this method yet as i am confused should I create my own openedx image like hack to to an exit container then create an image out of that container then push the image to docker hub by

By re-tagging an existing local image
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]

OR * By using
docker commit <existing-container> <hub-user>/<repo-name>[:<tag>]
to commit changes

then i push to my docker hub
docker push <hub-user>/<repo-name>:<tag>

so i can now use

tutor config save --set DOCKER_IMAGE_OPENEDX=docker.io/<hub-user>/<repo-name:<tag>
tutor images build openedx

Most importantly why and when should i use
tutor images push openedx

sorry for this long question, but I wanted to share my whole experiment and everything I did try so far.

NOTE:
I got 101 docker course and i am new to Tutor and OpenEdx

thank you :heart:

2 Likes

Hi Mr. @regis your kind support

1 Like

Hi friend, that is interesting also for me , I also created a topic about this The true way updating of server with custom edx-platform codes
I could not find an example for finding the true way.
I hope @regis could help us.

1 Like

You should push Docker images to a remote Docker registry only when you need to run these images on a computer that is different from the one where you built the images.

To clarify: on your laptop you would run:

tutor config save --set DOCKER_IMAGE_OPENEDX=docker.io/<hub-user>/<repo-name:<tag>
tutor images build \
    -a EDX_PLATFORM_REPOSITORY=https://github.com/username/edx-platform.git \
    -a EDX_PLATFORM_VERSION=my_branch/openedx
tutor images push

Then, on the remote server:

tutor config save --set DOCKER_IMAGE_OPENEDX=docker.io/<hub-user>/<repo-name:<tag>
# image will automatically be pulled every time you run `local quickstart`

If you build the image and run it on the same server then there is no need to run images push.

Does that make things clearer?

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.