Add CodeOcean Docker Images documentation
This commit is contained in:
63
content/codeocean-dockerimages.asciidoc
Normal file
63
content/codeocean-dockerimages.asciidoc
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
To work with codeocean and execute programming and automatic grading tasks custom docker images are used that serve file copy/paste and logging functionality customized for codeocean.
|
||||||
|
The images are built from the Dockerfiles in their example https://github.com/openHPI/dockerfiles repository.
|
||||||
|
|
||||||
|
The following images are used by CodeOcean:
|
||||||
|
//tabelle
|
||||||
|
[cols="2,2",options="header"]
|
||||||
|
|===
|
||||||
|
|Image | Version |
|
||||||
|
co_execenv_java | 8 |
|
||||||
|
co_execenv_julia | 1.8/1.10 |
|
||||||
|
co_execenv_node | 0.12 |
|
||||||
|
co_execenv_python | 3.4-rpi-web; 3.4; 3.7-ml; 3.8 |
|
||||||
|
co_execenv_r | 4 |
|
||||||
|
co_execenv_ruby | 2.5 |
|
||||||
|
docker_exec_phusion | |
|
||||||
|
ubuntu-base | Old ubuntu images no longer in use |
|
||||||
|
ubuntu-coffee | |
|
||||||
|
ubuntu-cpp | |
|
||||||
|
ubuntu-exec | |
|
||||||
|
ubuntu-jruby | |
|
||||||
|
ubuntu-python | |
|
||||||
|
ubuntu-sinatra | |
|
||||||
|
ubuntu-sqlite | |
|
||||||
|
|===
|
||||||
|
|
||||||
|
Supported images
|
||||||
|
|
||||||
|
- docker_exec_phusion: Base image for all execution environments
|
||||||
|
- co_execenv_<langauge>: An image used by CodeOcean for the specific programming language and version
|
||||||
|
|
||||||
|
All supported images are built for the following architectures:
|
||||||
|
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
To create own images, the Dockerfiles can be used as a template. The repository contains a `Dockerfile` for each supported language and version. The Dockerfiles are based on the `docker_exec_phusion` image and install the necessary dependencies for the respective language. The Dockerfiles also contain the necessary configuration for the CodeOcean environment.
|
||||||
|
|
||||||
|
For example the `Dockerfile` for the Java 17 image looks like this:
|
||||||
|
|
||||||
|
[source,docker]
|
||||||
|
----
|
||||||
|
FROM openhpi/docker_exec_phusion
|
||||||
|
MAINTAINER openHPI Team <openhpi-info@hpi.de>
|
||||||
|
LABEL description='This image provides a Java 17.0 environment with JUnit 5 support.'
|
||||||
|
LABEL run_command='make run'
|
||||||
|
LABEL test_command='make test CLASS_NAME="%{class_name}" FILENAME="%{filename}"'
|
||||||
|
|
||||||
|
# Get target architecture from Docker buildx
|
||||||
|
ARG TARGETARCH
|
||||||
|
|
||||||
|
# Install latest OpenJDK version 17.0
|
||||||
|
RUN install_clean openjdk-17-jdk make
|
||||||
|
|
||||||
|
# Add JUnit 5 Platform
|
||||||
|
ARG JUNIT_VERSION=1.11.0
|
||||||
|
RUN mkdir -p /usr/java/lib
|
||||||
|
RUN curl -fsSL -O --output-dir /usr/java/lib https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/$JUNIT_VERSION/junit-platform-console-standalone-$JUNIT_VERSION.jar
|
||||||
|
|
||||||
|
# Adjust Path variables
|
||||||
|
ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-$TARGETARCH
|
||||||
|
ENV JUNIT /usr/java/lib/junit-platform-console-standalone-$JUNIT_VERSION.jar
|
||||||
|
ENV CLASSPATH .:$JUNIT
|
||||||
|
----
|
@ -129,6 +129,10 @@ include::{includedir}/dockerization-codeocean.asciidoc[]
|
|||||||
|
|
||||||
include::{includedir}/deployment.asciidoc[]
|
include::{includedir}/deployment.asciidoc[]
|
||||||
|
|
||||||
|
=== CodeOcean Docker Images ===
|
||||||
|
|
||||||
|
include::{includedir}/codeocean-dockerimages.asciidoc[]
|
||||||
|
|
||||||
=== edX Kubernetes Deployment ===
|
=== edX Kubernetes Deployment ===
|
||||||
|
|
||||||
include::{includedir}/edX-k8s.asciidoc[]
|
include::{includedir}/edX-k8s.asciidoc[]
|
||||||
|
Reference in New Issue
Block a user