diff --git a/octave-cli/Dockerfile b/octave-cli/Dockerfile new file mode 100644 index 00000000..13bae7e3 --- /dev/null +++ b/octave-cli/Dockerfile @@ -0,0 +1,36 @@ +FROM clearlinux:latest AS builder + +ARG swupd_args +# Move to latest Clear Linux release to ensure +# that the swupd command line arguments are +# correct +RUN swupd update --no-boot-update $swupd_args + +# Grab os-release info from the minimal base image so +# that the new content matches the exact OS version +COPY --from=clearlinux/os-core:latest /usr/lib/os-release / + +# Install additional content in a target directory +# using the os version from the minimal base +RUN source /os-release && \ + mkdir /install_root \ + && swupd os-install -V ${VERSION_ID} \ + --path /install_root --statedir /swupd-state \ + --bundles=os-core-update,octave --no-boot-update + +# For some Host OS configuration with redirect_dir on, +# extra data are saved on the upper layer when the same +# file exists on different layers. To minimize docker +# image size, remove the overlapped files before copy. +RUN mkdir /os_core_install +COPY --from=clearlinux/os-core:latest / /os_core_install/ +RUN cd / && \ + find os_core_install | sed -e 's/os_core_install/install_root/' | xargs rm -d &> /dev/null || true + +FROM clearlinux/os-core:latest + +COPY --from=builder /install_root / + +WORKDIR /root + +ENTRYPOINT ["octave-cli"] diff --git a/octave-cli/README.md b/octave-cli/README.md new file mode 100644 index 00000000..0affdbce --- /dev/null +++ b/octave-cli/README.md @@ -0,0 +1,90 @@ +# Clear Linux* OS `octave` container image + + +## What is this image? + +`clearlinux/octave-cli` is a Docker image with `octave-cli` running on top of the +[official clearlinux base image](https://hub.docker.com/_/clearlinux). + + +> [octave](https://www.octave.org/) GNU Octave is a high-level language, primarily intended for numerical computations. +> It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments > using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language. + +For other Clear Linux* OS +based container images, see: https://hub.docker.com/u/clearlinux + +## Why use a clearlinux based image? + + +> [Clear Linux* OS](https://clearlinux.org/) is an open source, rolling release +> Linux distribution optimized for performance and security, from the Cloud to +> the Edge, designed for customization, and manageability. + +Clear Linux* OS based container images use: +* Optimized libraries that are compiled with latest compiler versions and + flags. +* Software packages that follow upstream source closely and update frequently. +* An aggressive security model and best practices for CVE patching. +* A multi-staged build approach to keep a reduced container image size. +* The same container syntax as the official images to make getting started + easy. + +To learn more about Clear Linux* OS, visit: https://clearlinux.org. + + +## Deployment: + +### Deploy with Docker +The easiest way to get started with this image is by simply pulling it from +Docker Hub. + + +1. Pull the image from Docker Hub: + ``` + docker pull clearlinux/octave-cli + ``` + +2. Start a container using the examples below: + + ``` + docker run -it --rm -v "$PWD":/root clearlinux/octave-cli your-script.m + ``` + + +### Deploy with Kubernetes + + +## Build and modify: + +The Dockerfiles for all Clear Linux* OS based container images are available at +https://github.com/clearlinux/dockerfiles. These can be used to build and +modify the container images. + +1. Clone the clearlinux/dockerfiles repository. + ``` + git clone https://github.com/clearlinux/dockerfiles.git + ``` + +2. Change to the directory of the application: + ``` + cd octave-cli/ + ``` + +3. Build the container image: + ``` + docker build -t clearlinux/octave-cli . + ``` +4. Please refer to [create custom application container image](https://docs.01.org/clearlinux/latest/guides/maintenance/container-image-modify.html) on how to customize your container image with specific debug capabilities, such as: make, git. + + Refer to the Docker documentation for [default build arguments](https://docs.docker.com/engine/reference/builder/#arg). + Additionally: + + - `swupd_args` - specifies arguments to pass to the Clear Linux* OS software + manager. See the [swupd man pages](https://github.com/clearlinux/swupd-client/blob/master/docs/swupd.1.rst#options) + for more information. + + +## Licenses + +All licenses for the Clear Linux* Project and distributed software can be found +at https://clearlinux.org/terms-and-policies diff --git a/octave-cli/hooks/post_push b/octave-cli/hooks/post_push new file mode 100755 index 00000000..78cfaac8 --- /dev/null +++ b/octave-cli/hooks/post_push @@ -0,0 +1,8 @@ +#!/bin/bash +. ../docker-hooks.sh + +image="clearlinux/octave-cli" +package=octave + +do_tag $image $package +