Skip to content
This repository was archived by the owner on May 27, 2023. It is now read-only.

Releases: JasonYangShadow/lpmx

Alpha Pre-Release v2.0.1

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 30 Apr 14:10

In this release, I have added new support for parsing yaml file, users can have docker-compose like experience when using LPMX.

The command to use compose is:

lpmx compose -f yaml_file
version: 1
apps:
  - name: "minimap2"
    image: "evolbioinfo/minimap2:v2.17"
    type: "docker"
    expose:
      - /usr/local/bin/minimap2:minimap2
    share:
      - /home/vagrant/share:/share
  - name: "target"
    image: "jasonyangshadow/example:1"
    type: "docker"
    command: "minimap -V && minimap '-a /share/human.fa /share/orang.fa > /share/test.sam'"
    inject:
      - /home/vagrant/bin/minimap2:/usr/bin/minimap
    share:
      - /home/vagrant/share:/share
    depends:
        - minimap2
  - name: "singularity container"
    image: "/home/vagrant/ubuntu.sif"
    type: "singularity"
    command: "cat /etc/os-release && echo $hello"
    envs:
      - hello=1
      - world=2

An explanation for the yaml template structure:

  1. version (required) is the yaml template version info, should be 1 here
  2. apps (required) defines the top level apps label, just hardcoded
  3. Followings are all container definitions
  • name (required): container name, user defined
  • image (required): container image name (DockerHub name or local absolute path for sif file)
  • type (required): should be docker or singularity
  • command (optional): command running inside container
  • inject (optional): inject binaries from host or other container into current container (should be absolute path)
  • share (optional): directories shared between host and container
  • depends (optional): define the requirement of current container, name defined in depends should exist in yaml file
  • expose (optional): expose apps inside current contains to host or other containers
  • envs (optional): environment variables added to containers
  • port (optional): mapping ports (not support now)

An example showing the usage. (The example is from https://github.com/JasonYangShadow/lpmx#quick-run)
The demo shows that we are composing two containers, one is built based on docker image named evolbioinfo/minimap2:v2.17, another one is based on docker image named jasonyangshadow/example:1, the definitions in the yaml file indicates that:

  1. for container named minimap2, it exposes inside minimap2 to host (version: 2.17-r941)
  2. for container named target, it injects exposed minimap2 (version: 2.17-r941) into itself and thus overrides its default minimap (version: 0.2-r123), and runs minimap analysis based on the data in shared folder with host.
  3. for container named singularity container, it extracts and imports layers from sif image and runs simple commands inside container

This demo shows that LPMX can inject apps in other containers into current container to dynamically override inside executables without touching the image. Fantastic, hah! isn't it?
MobaXterm_o4fyTOQmZF

Alpha Pre-Release v1.9.2

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 23 Apr 06:53

Remove configuration writing to bashrc

Alpha Pre-Release v1.9.1

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 20 Feb 07:29

In this version, I patched the hard-link untar issue, where all binaries in the bin or sbin folder are hard linked to /bin/arch file in the specific distro.
No impacts for other distros.

Alpha Pre-Release v1.9.0

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 27 Dec 05:13

Important (this release is an experimental one, we removed some dependencies and compile the libfakechroot against glibc 2.12 in centos 6.10 for better compatibility, but might cause some unexpected issues)

From version v.1.9.0, LPMX changes a lot on its implementation, such as removing its dependency of Memcached, which means it won't use Memcache as the info exchanger any longer, but using pure file instead, which will reduce the dependency complexity of LPMX.

From the end user's perspective, please do not upgrade for now until the release becomes more stable and passes more tests.
For the old version (<1.9.0), I will continue providing support.

Alpha Pre-Release v1.8.1

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 04 Dec 09:42

In this release we add a --use-old-glibc option for LPMX to solve exceptions when container image & host are incompatible on glibc.

In the following example, you can see that by using lpmx reset command we can reset the environment with different glibc compiling against libfakechroot. so that some glibc mismatch issue will be eliminated.
Peek 2021-12-04 18-40

Alpha Pre-Release v1.8

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 29 Sep 15:00

Add a new feature that directly importing directories generated from Skopeo.
https://github.com/containers/skopeo

LPMX can parse the manifest.json file generated by Skopeo and copy the layers to LPMX data directory.
Peek 2021-09-29 23-56

Alpha Pre-Release v1.7.2

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 24 Aug 13:52

add docker merge sub-command for merging the layers of both local docker images and images downloaded from docker hub.

lpmx docker merge image:tag

it will automatically generate a new image with only one layer named image:tag-merge

Notice:
from this version for volume mapping parameter, please change to use the following format:

lpmx docker create -v host_path1=container_path1:host_path2=container_path2 image:tag

Alpha Pre-Release v1.7.1

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 30 May 13:45

Add support for direct executable mapping through CLI

lpmx docker create -m host_path1=container_path1:host_path2=container_path2 ubuntu:16.04
lpmx docker fastrun -m host_path1=container_path1:host_path2=container_path2 ubuntu:16.04 "container_path1"

Some fixes on the 'lpmx list' command

Alpha Pre-Release v1.7

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 11 Jan 23:36

Add new features of caching exchanging info to file.
Add new support for containerizing the canu assembler.

https://github.com/JasonYangShadow/lpmx/wiki/canu-assembler

Alpha Pre-Release v1.6.3

Pre-release

Choose a tag to compare

@JasonYangShadow JasonYangShadow released this 26 Nov 08:10

In this release, we patched the feature of calling applications in other containers or in the host from the current container. By using 'lpmx set' command, an exec mapping can be set dynamically. See the following gif for the feature
GxuhQ2SWFA