Development Environment with Docker
Setting up and maintaining a proper Opencast build environment can be challenging. The quay.io/opencast/build
Docker image,
developed by the University of Münster, provides such a build environment already configured and ready to use. In fact,
because of Docker's isolation functionality, multiple environments can be operated side by side on a single machine.
Setting up a Docker build environment
A docker-compose
file is provided to start up the development environment. You also need the ActiveMQ configuration
(see "Testing Locally with Docker" guide in the administration documentation).
$ mkdir assets
$ curl -o docker-compose.yml https://raw.githubusercontent.com/opencast/opencast-docker/<version>/docker-compose/docker-compose.build.yml
$ curl -o assets/activemq.xml https://raw.githubusercontent.com/opencast/opencast-docker/<version>/docker-compose/assets/activemq.xml
Now create a folder where the Opencast repository should be located, and expose its path as an environment variable. You must also create the local Maven repository if it does not already exist.
$ mkdir -p opencast ~/.m2
$ export OPENCAST_SRC=$PWD/opencast
The OPENCAST_SRC
variable is used in the compose file to set up a Docker volume so that the host and Docker container
can share the Opencast codebase. Similarly, the local Maven repository is shared in order to persist Maven artifacts
beyond the lifetime of the Docker container. If you do not want to use the default path ~/.m2
you can set the
M2_REPO
variable to any other directory on the host system.
Next, you should specify your UID and GID. A matching user will then be created within the container so that all new files can also be accessed from the host. If these variables remain unset, both default to 1000.
$ export OPENCAST_BUILD_USER_UID=$(id -u)
$ export OPENCAST_BUILD_USER_GID=$(id -g)
With this you are ready to start up the build environment:
$ docker-compose up -d
You can enter the Opencast build environment with the exec
command. Omitting the --user opencast-builder
argument
would give you a root shell, but that is not necessary because the user opencast-builder
can use sudo
within the
container.
$ docker-compose exec --user opencast-builder opencast bash
There are multiple helper scripts available within the container:
# Clone the Opencast source code to the shared volume.
$ oc_clone
# Build Opencast.
$ oc_build
# Install Opencast in the same way as it would be installed in the other Opencast Docker images.
$ oc_install <distribution>
# Run the installed Opencast
$ oc_run
# Uninstall Opencast.
$ oc_uninstall
# Remove all Opencast files (database, media packages, etc.).
$ oc_clean_data
These scripts are provided to automate common tasks, but you can also run the necessary commands directly. The install
script has the advantage that it automatically connects Opencast to the configured ActiveMQ instance available at
tcp://activemq:61616
.
Since the Opencast code is shared, any change from an IDE is directly visible within the container.
Attaching a Remote Debugger to Karaf
By default, the compose file sets the necessary variables to enable remote debugging. The network port is published by
the container so that you can connect the remote debugger of your IDE to the port 5005
on localhost
.