Skip to content

Commit

Permalink
Merge pull request #301 from kjsanger/feature/add-irods-4.3.x
Browse files Browse the repository at this point in the history
Add Docker builds for iRODS 4.3.2 and 4.3.3
  • Loading branch information
kjsanger authored Sep 4, 2024
2 parents 86e72c7 + 1e133fa commit 4ca6649
Show file tree
Hide file tree
Showing 5 changed files with 186 additions and 4 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ jobs:
build_image: "ghcr.io/wtsi-npg/ub-22.04-irods-clients-dev-4.3.2:latest"
server_image: "ghcr.io/wtsi-npg/ub-22.04-irods-4.3.2:latest"
experimental: true
# iRODS 4.3.3 clients on Ubuntu 22.04
- irods: "4.3.3"
build_image: "ghcr.io/wtsi-npg/ub-22.04-irods-clients-dev-4.3.3:latest"
server_image: "ghcr.io/wtsi-npg/ub-22.04-irods-4.3.3:latest"
experimental: true

services:
irods-server:
Expand Down
40 changes: 40 additions & 0 deletions release/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ DOCKER_ARGS ?= --platform linux/amd64 --progress=plain --rm
image_names += ub-16.04-baton-irods-4.2.7
image_names += ub-18.04-baton-irods-4.2.11
image_names += ub-18.04-baton-irods-4.2.12
image_names += ub-22.04-baton-irods-4.3.2
image_names += ub-22.04-baton-irods-4.3.3

git_url=$(shell git remote get-url origin)
git_commit=$(shell git log --pretty=format:'%H' -n 1)
Expand Down Expand Up @@ -84,6 +86,44 @@ ub-18.04-baton-irods-4.2.12.$(TAG): ubuntu/18.04/Dockerfile
--tag $(DOCKER_PREFIX)/ub-18.04-baton-irods-4.2.12:$(TAG) --file $< .
touch $@

ub-22.04-baton-irods-4.3.2.$(TAG): ubuntu/22.04/Dockerfile
docker buildx build $(DOCKER_ARGS) \
--load \
--build-context source=.. \
--build-arg DOCKER_PREFIX=$(DOCKER_PREFIX) \
--build-arg DOCKER_IMAGE=$(subst .$(TAG),,$@) \
--build-arg DOCKER_TAG=$(TAG) \
--build-arg IRODS_VERSION="4.3.2" \
--build-arg BATON_VERSION=$(BATON_VERSION) \
--label org.opencontainers.image.title="iRODS 4.3.2 baton client, Ubuntu 22.04" \
--label org.opencontainers.image.source=$(git_url) \
--label org.opencontainers.image.revision=$(git_commit) \
--label org.opencontainers.image.version=$(TAG) \
--label org.opencontainers.image.created=$(NOW) \
--label org.opencontainers.image.vendor=npg.sanger.ac.uk \
--tag $(DOCKER_PREFIX)/ub-22.04-baton-irods-4.3.2:latest \
--tag $(DOCKER_PREFIX)/ub-22.04-baton-irods-4.3.2:$(TAG) --file $< .
touch $@

ub-22.04-baton-irods-4.3.3.$(TAG): ubuntu/22.04/Dockerfile
docker buildx build $(DOCKER_ARGS) \
--load \
--build-context source=.. \
--build-arg DOCKER_PREFIX=$(DOCKER_PREFIX) \
--build-arg DOCKER_IMAGE=$(subst .$(TAG),,$@) \
--build-arg DOCKER_TAG=$(TAG) \
--build-arg IRODS_VERSION="4.3.3" \
--build-arg BATON_VERSION=$(BATON_VERSION) \
--label org.opencontainers.image.title="iRODS 4.3.3 baton client, Ubuntu 22.04" \
--label org.opencontainers.image.source=$(git_url) \
--label org.opencontainers.image.revision=$(git_commit) \
--label org.opencontainers.image.version=$(TAG) \
--label org.opencontainers.image.created=$(NOW) \
--label org.opencontainers.image.vendor=npg.sanger.ac.uk \
--tag $(DOCKER_PREFIX)/ub-22.04-baton-irods-4.3.3:latest \
--tag $(DOCKER_PREFIX)/ub-22.04-baton-irods-4.3.3:$(TAG) --file $< .
touch $@

%.$(TAG).pushed: %.$(TAG)
docker push $(DOCKER_PREFIX)/$*:$(TAG)
docker push $(DOCKER_PREFIX)/$*:latest
Expand Down
4 changes: 2 additions & 2 deletions release/ubuntu/16.04/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# syntax=docker/dockerfile:1

ARG BASE_IMAGE=ubuntu:16.04
FROM $BASE_IMAGE AS installer
Expand Down Expand Up @@ -58,10 +57,11 @@ COPY --from=source . /app
WORKDIR /app

ENV CPPFLAGS="-I/usr/include/irods"
ENV CPU_COUNT=4

RUN autoreconf -fi && \
./configure && \
make install && \
make -j ${CPU_COUNT} install && \
ldconfig

FROM $BASE_IMAGE
Expand Down
4 changes: 2 additions & 2 deletions release/ubuntu/18.04/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# syntax=docker/dockerfile:1

ARG BASE_IMAGE=ubuntu:18.04
FROM $BASE_IMAGE AS installer
Expand Down Expand Up @@ -58,10 +57,11 @@ COPY --from=source . /app
WORKDIR /app

ENV CPPFLAGS="-I/usr/include/irods"
ENV CPU_COUNT=4

RUN autoreconf -fi && \
./configure && \
make install && \
make -j ${CPU_COUNT} install && \
ldconfig

FROM $BASE_IMAGE
Expand Down
137 changes: 137 additions & 0 deletions release/ubuntu/22.04/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
ARG BASE_IMAGE=ubuntu:22.04
FROM $BASE_IMAGE AS installer

ARG IRODS_VERSION="4.3.2"

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install -q -y --no-install-recommends \
apt-utils \
ca-certificates \
curl \
dirmngr \
gpg \
gpg-agent \
lsb-release \
locales && \
locale-gen en_GB en_GB.UTF-8 && \
localedef -i en_GB -c -f UTF-8 -A /usr/share/locale/locale.alias en_GB.UTF-8

ENV LANG=en_GB.UTF-8 \
LANGUAGE=en_GB \
LC_ALL=en_GB.UTF-8 \
TZ=Etc/UTC

RUN curl -sSL https://packages.irods.org/irods-signing-key.asc | apt-key add - && \
echo "deb [arch=amd64] https://packages.irods.org/apt/ $(lsb_release -sc) main" |\
tee /etc/apt/sources.list.d/renci-irods.list

RUN apt-get update && \
apt-get install -q -y --no-install-recommends \
irods-dev="${IRODS_VERSION}-0~$(lsb_release -sc)" \
irods-runtime="${IRODS_VERSION}-0~$(lsb_release -sc)"

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "E1DD270288B4E6030699E45FA1715D88E1DF1F24" && \
echo "deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu $(lsb_release -sc) main" |\
tee /etc/apt/sources.list.d/git-core.list

RUN apt-get update && \
apt-get install -q -y --no-install-recommends \
autoconf \
automake \
build-essential \
git \
libtool \
pkg-config \
python3-sphinx \
libjansson-dev \
libbz2-dev \
libcurl4-openssl-dev \
liblzma-dev \
zlib1g-dev

COPY --from=source . /app

WORKDIR /app

ENV CPPFLAGS="-I/usr/include/irods"
ENV CPU_COUNT=4

RUN autoreconf -fi && \
./configure && \
make -j ${CPU_COUNT} install && \
ldconfig

FROM $BASE_IMAGE

ARG DOCKER_IMAGE
ARG DOCKER_TAG
ARG IRODS_VERSION

ARG APP_USER=appuser
ARG APP_UID=1000
ARG APP_GID=$APP_UID

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install -q -y --no-install-recommends \
apt-utils \
ca-certificates \
curl \
dirmngr \
gpg \
gpg-agent \
lsb-release \
locales && \
locale-gen en_GB en_GB.UTF-8 && \
localedef -i en_GB -c -f UTF-8 -A /usr/share/locale/locale.alias en_GB.UTF-8

ENV LANG=en_GB.UTF-8 \
LANGUAGE=en_GB \
LC_ALL=en_GB.UTF-8 \
TZ=Etc/UTC

RUN curl -sSL https://packages.irods.org/irods-signing-key.asc | apt-key add - && \
echo "deb [arch=amd64] https://packages.irods.org/apt/ $(lsb_release -sc) main" |\
tee /etc/apt/sources.list.d/renci-irods.list

RUN apt-get update && \
apt-get install -q -y --no-install-recommends \
irods-runtime="${IRODS_VERSION}-0~$(lsb_release -sc)" \
jq \
libjansson4 \
libbz2-1.0 \
libcurl4 \
liblzma5 \
zlib1g \
unattended-upgrades && \
unattended-upgrade -v && \
apt-get remove -q -y unattended-upgrades && \
apt-get autoremove -q -y && \
apt-get clean -q -y && \
rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copy the installed baton application
COPY --from=installer /usr/local /usr/local

# Copy the singularity-wrapper scripts
COPY --from=installer /app/release/singularity-* /usr/local/bin
COPY --from=installer /app/release/manifest.txt /usr/local/etc/baton/manifest.txt

# Configure the singularity-wrapper script
ENV MANIFEST_PATH="/usr/local/etc/baton/manifest.txt"
ENV DOCKER_IMAGE="$DOCKER_IMAGE"
ENV DOCKER_TAG="$DOCKER_TAG"

RUN ldconfig

RUN groupadd --gid $APP_GID $APP_USER && \
useradd --uid $APP_UID --gid $APP_GID --shell /bin/bash --create-home $APP_USER

USER $APP_USER

CMD ["/bin/bash"]

0 comments on commit 4ca6649

Please sign in to comment.