63 lines
2.3 KiB
Plaintext
63 lines
2.3 KiB
Plaintext
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
|
|
---- |