opencast-docker
opencast-docker copied to clipboard
Dockerfiles for Opencast
Opencast container images
- Introduction
- Installation
- Build
- Quick Start
- Images
allinoneadmin,worker,adminpresentation,ingestandpresentationbuild
- Usage
- Configuration
- Opencast
- Elasticsearch
- Database
- H2
- MariaDB and PostgreSQL
- whisper.cpp
- Miscellaneous
- Data
- Languages
- References
Introduction
This repository holds Dockerfiles for creating Opencast container images.
Installation
All images are available on Quay. To install the image simply pull the distribution you want:
$ docker pull "quay.io/opencast/<distribution>"
To install a specific version, use the following command:
$ docker pull "quay.io/opencast/<distribution>:<version>"
Build
If you want to build the images yourself, there is a Makefile with the necessary docker build commands for all distributions. Running make in the root directory will create these images. To customize the build you can override these variables:
OPENCAST_REPO
The git repository to clone Opencast from. The default is the upstream repository, but you can use your own fork.OPENCAST_VERSION
The name of the Git branch, tag or commit hash to check out. Defaults to the content of theVERSION_OPENCASTfile.FFMPEG_VERSION
The version of the Opencast FFmpeg build. Defaults to the content of theVERSION_FFMPEGfile.WHISPER_CPP_VERSION
The version of whisper.cpp. Defaults to the content of theVERSION_WHISPER_CPPfile.IMAGE_REGISTRY
The first part of the image name. It defaults toquay.io/opencastand will be extended by the name of the Opencast distribution.IMAGE_TAG
The tag of the image. Defaults to the content of theVERSIONfile.DOCKER_BUILD_ARGS
Custom arguments that should be passed todocker build, e.g. you can set this to--no-cacheto force an image build. By default empty.GIT_COMMIT
Overwrites the Git commit hash that is set as image label.BUILD_DATE
Overwrites the build date that is set as image label.
Quick Start
A quick local test system can be started using docker-compose. After cloning this repository you can run this command from the root directory:
$ docker-compose -p opencast-allinone -f docker-compose/docker-compose.allinone.h2.yml up
This will run Opencast using the allinone distribution configured to use the bundled H2 Database Engine.
In the ./docker-compose directory there are also compose files for more production-like setups. docker-compose.allinone.mariadb.yml and docker-compose.allinone.postgresql.yml uses the MariaDB and PostgreSQL databases, respectively, while docker-compose.multiserver.mariadb.yml and docker-compose.multiserver.postgresql.yml demonstrate how to connect the different distributions. Replace the compose file in the command above if you want to use them instead. You can find more information about the compose files here.
Images
Opencast comes in different distributions. For each of the official distributions, there is a specific container image. Each version is tagged. For example, the full image name containing the admin distribution at version 15.4 is quay.io/opencast/admin:15.4. Leaving the version out will install the latest one.
allinone
This image contains all Opencast modules necessary to run a full Opencast installation. It's useful for small and local test setups. If you, however, want to run Opencast in a distributed fashion, you probably should use a combination of admin, worker and presentation containers.
admin, adminpresentation, ingest, presentation and worker,
These images contain the Opencast modules of the corresponding Opencast distributions.
build
This image helps you set up a development environment for Opencast:
$ export OPENCAST_SRC=</path/to/my/opencast/code>
$ export OPENCAST_BUILD_USER_UID=$(id -u)
$ export OPENCAST_BUILD_USER_GID=$(id -g)
$ docker-compose -p opencast-build -f docker-compose/docker-compose.build.yml up -d
$ docker-compose -p opencast-build -f docker-compose/docker-compose.build.yml exec --user opencast-builder opencast bash
After attaching you can press enter to force the shell to output a prompt.
Starting with 2.2.2 there will be a build image for every release of Opencast. It will know how to build this specific version within the container. While you can use git to check out different versions of Opencast, we recommend that with it you then also change the version of the build container.
Usage
The images come with multiple commands. You can see a full list with description by running:
$ docker run --rm quay.io/opencast/<distribution> app:help
Usage:
app:help Prints the usage information
app:init Checks and configures Opencast but does not run it
app:start Starts Opencast
[cmd] [args...] Runs [cmd] with given arguments
Configuration
It's recommended to configure Opencast by using Docker Volumes:
$ docker run -v "/path/to/opencast-etc:/etc/opencast" quay.io/opencast/<distribution>
The most important settings, however, can be configured by environment variables. You can use this functionally to generate new configuration files. For this start a new container with specific variables and execute the app:init command. This will ensure you haven't missed anything, write the configuration files and exit. Then you can copy the files to a target directory:
$ docker run --name opencast_generate_config \
-e "ORG_OPENCASTPROJECT_SERVER_URL=http://localhost:8080" \
-e "ORG_OPENCASTPROJECT_SECURITY_ADMIN_USER=admin" \
-e "ORG_OPENCASTPROJECT_SECURITY_ADMIN_PASS=opencast" \
-e "ORG_OPENCASTPROJECT_SECURITY_DIGEST_USER=opencast_system_account" \
-e "ORG_OPENCASTPROJECT_SECURITY_DIGEST_PASS=CHANGE_ME" \
quay.io/opencast/<distribution> "app:init"
$ docker cp opencast_generate_config:/opencast/etc opencast-config
$ docker rm opencast_generate_config
Make sure to use the correct Opencast distribution as there are small differences.
Opencast
ORG_OPENCASTPROJECT_SERVER_URLOptional
The HTTP-URL where Opencast is accessible. The default ishttp://<Fully Qualified Host Name>:8080.ORG_OPENCASTPROJECT_SECURITY_ADMIN_USERRequired
Username of the admin user.ORG_OPENCASTPROJECT_SECURITY_ADMIN_PASSRequired
Password of the admin user. You may alternatively setORG_OPENCASTPROJECT_SECURITY_ADMIN_PASS_FILEto the location of a file within the container that contains the password.ORG_OPENCASTPROJECT_SECURITY_DIGEST_USERRequired
Username for the communication between Opencast nodes and capture agents.ORG_OPENCASTPROJECT_SECURITY_DIGEST_PASSRequired
Password for the communication between Opencast nodes and capture agents. You may alternatively setORG_OPENCASTPROJECT_SECURITY_DIGEST_PASS_FILEto the location of a file within the container that contains the password.ORG_OPENCASTPROJECT_DOWNLOAD_URLOptional
The HTTP-URL to use for downloading media files, e.g. for the player. Defaults to${org.opencastproject.server.url}/static.ORG_OPENCASTPROJECT_ADMIN_EMAILOptional
Email address of the server's admin. Defaults toadmin@localhost.
For an installation with multiple nodes you can also set:
PROP_ORG_OPENCASTPROJECT_FILE_REPO_URLOptional
HTTP-URL of the file repository. Defaults to${org.opencastproject.server.url}in theallinonedistribution and${org.opencastproject.admin.ui.url}for every other one.PROP_ORG_OPENCASTPROJECT_ADMIN_UI_URLRequired for all butallinone
HTTP-URL of the admin node.PROP_ORG_OPENCASTPROJECT_ENGAGE_UI_URLRequired for all butallinone
HTTP-URL of the engage node.
Elasticsearch
ELASTICSEARCH_SERVER_HOSTRequired forallinone,developandadmin
Hostname to Elasticsearch.ELASTICSEARCH_SERVER_SCHEMEOptional
Protocol to use when accessing Elasticsearch. Eitherhttporhttps. The default ishttp.ELASTICSEARCH_SERVER_PORTOptional
Port number of Elasticsearch. The default is9200.ELASTICSEARCH_USERNAMEOptional
Username to use when accessing Elasticsearch. The default is none.ELASTICSEARCH_PASSWORDOptional
Password to use when accessing Elasticsearch. The default is none.NUMBER_OF_TIMES_TRYING_TO_CONNECT_TO_ELASTICSEARCHOptional
Specifies how often Opencast is going to try to establish a TCP connection to the specified Elasticsearch cluster before giving up. The waiting time between tries is 5 seconds. The default number of tries is 25. Setting this to 0 skips the check.
Database
ORG_OPENCASTPROJECT_DB_VENDOROptional
The type of database to use. Currently, you can set this to eitherH2,MariaDB, orPostgreSQL. The default isH2.NUMBER_OF_TIMES_TRYING_TO_CONNECT_TO_DBOptional
Specifies how often Opencast is going to try to connect to the specified database before giving up. The waiting time between tries is 5 seconds. The default number of tries is 25. This configuration only applies if the database is not H2. Setting this to 0 skips the check.
H2
There are no additional environment variables you can set if you are using the H2 database.
MariaDB and PostgreSQL
ORG_OPENCASTPROJECT_DB_JDBC_URLRequired
JDBC connection string.ORG_OPENCASTPROJECT_DB_JDBC_USERRequired
Database username.ORG_OPENCASTPROJECT_DB_JDBC_PASSRequired
Password of the database user. You may alternatively setORG_OPENCASTPROJECT_DB_JDBC_PASS_FILEto the location of a file within the container that contains the password.
whisper.cpp
WHISPER_CPP_DOWNLOAD_MODELOptional
Download the specified whisper.cpp model. Note that models are downloaded in parallel to the startup of Opencast. Not waiting for model downloads greatly improves the Opencast startup time. However, transcription operations may fail if models are not available yet. The default is an empty string, i.e. no model is downloaded.
Miscellaneous
TIMEZONEOptional
Set the timezone within the container. Valid timezones are represented by files in/usr/share/zoneinfo/, for example,Europe/Berlin. The default isUTC.
Data
The data directory is located at /data. Use Docker Volumes to mount this directory on your host.
Languages
Opencast makes use of Tesseract to recognize text in videos (ORC). For this, training data files are needed. These images come with files for the English language. If you need other or more languages you can extend these images or use Docker Volumes to mount them in the appropriate directories /usr/share/tessdata.