Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Octave as CLI Docker added #394

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions octave-cli/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
90 changes: 90 additions & 0 deletions octave-cli/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Clear Linux* OS `octave` container image

<!-- Required -->
## 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).

<!-- application introduction -->
> [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?

<!-- CL introduction -->
> [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.

<!-- Required -->
## 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
```

<!-- Optional -->
### Deploy with Kubernetes

<!-- Required -->
## 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.

<!-- Required -->
## Licenses

All licenses for the Clear Linux* Project and distributed software can be found
at https://clearlinux.org/terms-and-policies
8 changes: 8 additions & 0 deletions octave-cli/hooks/post_push
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash
. ../docker-hooks.sh

image="clearlinux/octave-cli"
package=octave

do_tag $image $package