Skip to content

Commit

Permalink
build(docker): create reana-client container image
Browse files Browse the repository at this point in the history
Closes #709
  • Loading branch information
tiborsimko committed Mar 14, 2024
1 parent 3bdf802 commit 5a99da6
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file is part of REANA.
# Copyright (C) 2017, 2018, 2020, 2021 CERN.
# Copyright (C) 2017, 2018, 2020, 2021, 2024 CERN.
#
# REANA is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.
Expand Down
63 changes: 63 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# This file is part of REANA.
# Copyright (C) 2024 CERN.
#
# REANA is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.

# Use Ubuntu LTS base image
FROM docker.io/library/ubuntu:20.04

# Use default answers in installation commands
ENV DEBIAN_FRONTEND=noninteractive

# Use distutils provided by the standard Python library instead of the vendored one in
# setuptools, so that editable installations are stored in the right directory.
# See https://github.com/pypa/setuptools/issues/3301
ENV SETUPTOOLS_USE_DISTUTILS=stdlib

# Add sources to `/code` and work there
WORKDIR /code
COPY . /code

# Install system dependencies and reana-client in one go
# hadolint ignore=DL3008,DL3013
RUN apt-get update -y && \
apt-get install --no-install-recommends -y \
libpython3.8 \
python3-pip \
python3.8 \
python3.8-dev && \
apt-get remove -y \
gcc \
python3.8-dev && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
pip3 install --no-cache-dir kubernetes && \
pip3 install --no-cache-dir '.[tests]' && \
rm -rf /code

# Run container as `reana` user with UID `1000`, which should match
# current host user in most situations
# hadolint ignore=DL3059
RUN adduser --uid 1000 reana --gid 0 && \
chown -R reana:root /home/reana
WORKDIR /home/reana

# Run reana-client upon entry
USER reana
ENTRYPOINT ["reana-client"]

# Set image labels
LABEL org.opencontainers.image.authors="[email protected]"
LABEL org.opencontainers.image.created="2024-03-14"
LABEL org.opencontainers.image.description="REANA reproducible analysis platform - command-line client"
LABEL org.opencontainers.image.documentation="https://reana-client.readthedocs.io/"
LABEL org.opencontainers.image.licenses="MIT"
LABEL org.opencontainers.image.source="https://github.com/reanahub/reana-client"
LABEL org.opencontainers.image.title="reana-client"
LABEL org.opencontainers.image.url="https://github.com/reanahub/reana-client"
LABEL org.opencontainers.image.vendor="reanahub"
# x-release-please-start-version
LABEL org.opencontainers.image.version="0.9.3"
# x-release-please-end
18 changes: 18 additions & 0 deletions run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,18 @@ check_cli_api () {
rm cli_api.md
}

check_dockerfile () {
docker run -i --rm docker.io/hadolint/hadolint:v2.12.0 < Dockerfile
}

check_docker_build () {
docker build -t docker.io/reanahub/reana-client .
}

check_docker_run () {
docker run --rm -v "$PWD"/tests:/home/reana/tests --entrypoint /bin/bash docker.io/reanahub/reana-client -c 'pytest tests'
}

check_sphinx () {
sphinx-build -qnNW docs docs/_build/html
sphinx-build -qnNW -b doctest docs docs/_build/doctest
Expand All @@ -82,6 +94,9 @@ check_all() {
check_manifest
check_cli_cmds
check_cli_api
check_dockerfile
check_docker_build
check_docker_run
check_sphinx
check_pytest
}
Expand All @@ -101,6 +116,9 @@ case $arg in
--check-manifest) check_manifest;;
--check-cli-cmds) check_cli_cmds;;
--check-cli-api) check_cli_api;;
--check-dockerfile) check_dockerfile;;
--check-docker-build) check_docker_build;;
--check-docker-run) check_docker_run;;
--check-sphinx) check_sphinx;;
--check-pytest) check_pytest;;
*) echo "[ERROR] Invalid argument '$arg'. Exiting." && exit 1;;
Expand Down

0 comments on commit 5a99da6

Please sign in to comment.