diff --git a/docker/Makefile b/docker/Makefile index e8b5abb..1c3c667 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -20,18 +20,20 @@ image_names += ub-16.04-irods-4.2.7 image_names += ub-18.04-irods-4.2.11 image_names += ub-18.04-irods-4.2.12 image_names += ub-18.04-irods-4.3.0 +image_names += ub-22.04-irods-4.3.1 image_names += ub-22.04-irods-4.3-nightly image_names += ub-16.04-irods-clients-dev-4.2.7 image_names += ub-18.04-irods-clients-dev-4.2.11 image_names += ub-18.04-irods-clients-dev-4.2.12 image_names += ub-18.04-irods-clients-dev-4.3.0 -image_names += ub-20.04-irods-clients-dev-4.3.0 +image_names += ub-22.04-irods-clients-dev-4.3.1 image_names += ub-22.04-irods-clients-dev-4.3-nightly image_names += ub-16.04-irods-clients-4.2.7 image_names += ub-18.04-irods-clients-4.2.11 image_names += ub-18.04-irods-clients-4.2.12 +image_names += ub-22.04-irods-clients-4.3.1 image_names += ub-22.04-irods-clients-4.3-nightly git_url=$(shell git remote get-url origin) @@ -138,7 +140,21 @@ ub-18.04-irods-4.3.0.$(TAG): irods/ubuntu/18.04/Dockerfile ub-18.04-base.$(TAG) --tag $(DOCKER_PREFIX)/ub-18.04-irods-4.3.0:$(TAG) --file $< ./irods touch $@ -ub-22.04-irods-4.3-nightly.$(TAG): irods/ubuntu/22.04/Dockerfile ub-22.04-base.$(TAG) +ub-22.04-irods-4.3.1.$(TAG): irods/ubuntu/22.04/Dockerfile ub-22.04-base.$(TAG) + docker buildx build $(DOCKER_ARGS) \ + --load \ + --build-arg BASE_IMAGE=$(DOCKER_PREFIX)/ub-22.04-base \ + --build-arg IRODS_VERSION=4.3.1 \ + --label org.opencontainers.image.title="iRODS 4.3.1 server, 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) \ + --tag $(DOCKER_PREFIX)/ub-22.04-irods-4.3.1:latest \ + --tag $(DOCKER_PREFIX)/ub-22.04-irods-4.3.1:$(TAG) --file $< ./irods + touch $@ + +ub-22.04-irods-4.3-nightly.$(TAG): irods/ubuntu/22.04/Dockerfile.nightly ub-22.04-base.$(TAG) docker buildx build $(DOCKER_ARGS) \ --load \ --build-arg BASE_IMAGE=$(DOCKER_PREFIX)/ub-22.04-base \ @@ -173,7 +189,7 @@ ub-16.04-irods-clients-4.2.7.$(TAG): irods_clients/ubuntu/16.04/Dockerfile ub-16 --tag $(DOCKER_PREFIX)/ub-16.04-irods-clients-4.2.7:$(TAG) --file $< ./irods_clients touch $@ -ub-18.04-irods-clients-4.2.11.$(TAG): irods_clients/ubuntu/Dockerfile ub-18.04-base.$(TAG) +ub-18.04-irods-clients-4.2.11.$(TAG): irods_clients/ubuntu/18.04/Dockerfile ub-18.04-base.$(TAG) docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ @@ -194,7 +210,7 @@ ub-18.04-irods-clients-4.2.11.$(TAG): irods_clients/ubuntu/Dockerfile ub-18.04-b --tag $(DOCKER_PREFIX)/ub-18.04-irods-clients-4.2.11:$(TAG) --file $< ./irods_clients touch $@ -ub-18.04-irods-clients-4.2.12.$(TAG): irods_clients/ubuntu/Dockerfile ub-18.04-base.$(TAG) +ub-18.04-irods-clients-4.2.12.$(TAG): irods_clients/ubuntu/18.04/Dockerfile ub-18.04-base.$(TAG) docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ @@ -216,7 +232,29 @@ ub-18.04-irods-clients-4.2.12.$(TAG): irods_clients/ubuntu/Dockerfile ub-18.04-b --tag $(DOCKER_PREFIX)/ub-18.04-irods-clients-4.2.12:$(TAG) --file $< ./irods_clients touch $@ -ub-22.04-irods-clients-4.3-nightly.$(TAG): irods_clients/ubuntu/22.04/Dockerfile +ub-22.04-irods-clients-4.3.1.$(TAG): irods_clients/ubuntu/22.04/Dockerfile + docker buildx build $(DOCKER_ARGS) \ + --load \ + --build-context singularity=../singularity \ + --build-arg DOCKER_PREFIX=$(DOCKER_PREFIX) \ + --build-arg BASE_IMAGE=$(DOCKER_PREFIX)/ub-22.04-base \ + --build-arg DOCKER_IMAGE=$(subst .$(TAG),,$@) \ + --build-arg DOCKER_TAG=$(TAG) \ + --build-arg IRODS_VERSION=4.3.1 \ + --build-arg BATON_VERSION=4.2.1 \ + --build-arg HTSLIB_VERSION=1.18 \ + --build-arg SAMTOOLS_VERSION=1.18 \ + --build-arg BCFTOOLS_VERSION=1.18 \ + --label org.opencontainers.image.title="iRODS 4.3.1 clients, 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) \ + --tag $(DOCKER_PREFIX)/ub-22.04-irods-clients-4.3.1:latest \ + --tag $(DOCKER_PREFIX)/ub-22.04-irods-clients-4.3.1:$(TAG) --file $< ./irods_clients + touch $@ + +ub-22.04-irods-clients-4.3-nightly.$(TAG): irods_clients/ubuntu/22.04/Dockerfile.nightly docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ @@ -255,7 +293,7 @@ ub-16.04-irods-clients-dev-4.2.7.$(TAG): irods_clients_dev/ubuntu/16.04/Dockerfi --tag $(DOCKER_PREFIX)/ub-16.04-irods-clients-dev-4.2.7:$(TAG) --file $< ./irods_clients_dev touch $@ -ub-18.04-irods-clients-dev-4.2.11.$(TAG): irods_clients_dev/ubuntu/Dockerfile +ub-18.04-irods-clients-dev-4.2.11.$(TAG): irods_clients_dev/ubuntu/18.04/Dockerfile docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ @@ -272,11 +310,11 @@ ub-18.04-irods-clients-dev-4.2.11.$(TAG): irods_clients_dev/ubuntu/Dockerfile --tag $(DOCKER_PREFIX)/ub-18.04-irods-clients-dev-4.2.11:$(TAG) --file $< ./irods_clients_dev touch $@ -ub-18.04-irods-clients-dev-4.2.12.$(TAG): irods_clients_dev/ubuntu/Dockerfile +ub-18.04-irods-clients-dev-4.2.12.$(TAG): irods_clients_dev/ubuntu/18.04/Dockerfile docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ - --build-arg BASE_IMAGE=ubuntu:bionic \ + --build-arg BASE_IMAGE=ubuntu:18.04 \ --build-arg DOCKER_IMAGE=$(subst .$(TAG),,$@) \ --build-arg DOCKER_TAG=$(TAG) \ --build-arg IRODS_VERSION=4.2.12 \ @@ -289,11 +327,11 @@ ub-18.04-irods-clients-dev-4.2.12.$(TAG): irods_clients_dev/ubuntu/Dockerfile --tag $(DOCKER_PREFIX)/ub-18.04-irods-clients-dev-4.2.12:$(TAG) --file $< ./irods_clients_dev touch $@ -ub-18.04-irods-clients-dev-4.3.0.$(TAG): irods_clients_dev/ubuntu/Dockerfile +ub-18.04-irods-clients-dev-4.3.0.$(TAG): irods_clients_dev/ubuntu/18.04/Dockerfile docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ - --build-arg BASE_IMAGE=ubuntu:bionic \ + --build-arg BASE_IMAGE=ubuntu:18.04 \ --build-arg DOCKER_IMAGE=$(subst .$(TAG),,$@) \ --build-arg DOCKER_TAG=$(TAG) \ --build-arg IRODS_VERSION=4.3.0 \ @@ -306,25 +344,25 @@ ub-18.04-irods-clients-dev-4.3.0.$(TAG): irods_clients_dev/ubuntu/Dockerfile --tag $(DOCKER_PREFIX)/ub-18.04-irods-clients-dev-4.3.0:$(TAG) --file $< ./irods_clients_dev touch $@ -ub-20.04-irods-clients-dev-4.3.0.$(TAG): irods_clients_dev/ubuntu/Dockerfile +ub-22.04-irods-clients-dev-4.3.1.$(TAG): irods_clients_dev/ubuntu/22.04/Dockerfile docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ --build-arg DOCKER_PREFIX=$(DOCKER_PREFIX) \ - --build-arg BASE_IMAGE=ubuntu:20.04 \ - --build-arg IRODS_VERSION=4.3.0 \ + --build-arg BASE_IMAGE=ubuntu:22.04 \ + --build-arg IRODS_VERSION=4.3.1 \ --build-arg DOCKER_IMAGE=$(subst .$(TAG),,$@) \ --build-arg DOCKER_TAG=$(TAG) \ - --label org.opencontainers.image.title="iRODS 4.3.0 client development, Ubuntu 20.04" \ + --label org.opencontainers.image.title="iRODS 4.3.1 client development, 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) \ - --tag $(DOCKER_PREFIX)/ub-20.04-irods-clients-dev-4.3.0:latest \ - --tag $(DOCKER_PREFIX)/ub-20.04-irods-clients-dev-4.3.0:$(TAG) --file $< ./irods_clients_dev + --tag $(DOCKER_PREFIX)/ub-22.04-irods-clients-dev-4.3.1:latest \ + --tag $(DOCKER_PREFIX)/ub-22.04-irods-clients-dev-4.3.1:$(TAG) --file $< ./irods_clients_dev touch $@ -ub-22.04-irods-clients-dev-4.3-nightly.$(TAG): irods_clients_dev/ubuntu/22.04/Dockerfile +ub-22.04-irods-clients-dev-4.3-nightly.$(TAG): irods_clients_dev/ubuntu/22.04/Dockerfile.nightly docker buildx build $(DOCKER_ARGS) \ --load \ --build-context singularity=../singularity \ diff --git a/docker/irods/scripts/configure_irods.sh b/docker/irods/scripts/configure_irods.sh index 859db02..b6ac56b 100755 --- a/docker/irods/scripts/configure_irods.sh +++ b/docker/irods/scripts/configure_irods.sh @@ -19,9 +19,14 @@ case "$IRODS_VERSION" in patch /var/lib/irods/scripts/irods/lib.py /opt/docker/irods/patches/patch_lib.diff python /var/lib/irods/scripts/setup_irods.py < /opt/docker/irods/config/setup_irods.py.in ;; - 4.3.*) + 4.3.0) patch /var/lib/irods/scripts/irods/controller.py /opt/docker/irods/patches/patch_controller.diff - sudo python3 /var/lib/irods/scripts/setup_rsyslog_and_logrotate.py # automatic setup for these has been removed + sudo python3 /var/lib/irods/scripts/setup_rsyslog_and_logrotate.py # Automatic setup for these has been removed. + python3 /var/lib/irods/scripts/setup_irods.py < /opt/docker/irods/config/4.3.x.setup_irods.py.in + ;; + 4.3.1) + patch /var/lib/irods/scripts/irods/controller.py /opt/docker/irods/patches/patch_controller.diff + # Logging has been changed to use rsyslog. A potential enhancement is to configure that here. python3 /var/lib/irods/scripts/setup_irods.py < /opt/docker/irods/config/4.3.x.setup_irods.py.in ;; *) diff --git a/docker/irods/ubuntu/16.04/Dockerfile b/docker/irods/ubuntu/16.04/Dockerfile index 89b7c54..e33503d 100644 --- a/docker/irods/ubuntu/16.04/Dockerfile +++ b/docker/irods/ubuntu/16.04/Dockerfile @@ -1,6 +1,7 @@ ARG BASE_IMAGE=16.04-base FROM $BASE_IMAGE +# This default is the latest usable version ARG IRODS_VERSION="4.2.7" WORKDIR /opt/docker/irods diff --git a/docker/irods/ubuntu/18.04/Dockerfile b/docker/irods/ubuntu/18.04/Dockerfile index 903aa69..817ea22 100644 --- a/docker/irods/ubuntu/18.04/Dockerfile +++ b/docker/irods/ubuntu/18.04/Dockerfile @@ -1,7 +1,10 @@ ARG BASE_IMAGE=ub-18.04-base FROM $BASE_IMAGE -ARG IRODS_VERSION="4.3.0" +# The default is the latest usable version +ARG IRODS_VERSION="4.3.1" +# This is the Debian package revision number +ARG IRODS_REVISION="1" WORKDIR /opt/docker/irods @@ -37,11 +40,11 @@ RUN curl -sSL https://packages.irods.org/irods-signing-key.asc | apt-key add - & tee /etc/apt/sources.list.d/renci-irods.list && \ apt-get update && \ apt-get install -q -y --no-install-recommends \ - irods-server="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-runtime="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-database-plugin-postgres="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-icommands="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-dev="${IRODS_VERSION}-1~$(lsb_release -sc)" && \ + irods-server="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-database-plugin-postgres="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-dev="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" && \ apt-get install -q -y -f && \ unattended-upgrade -v && \ apt-get remove -q -y unattended-upgrades && \ diff --git a/docker/irods/ubuntu/22.04/Dockerfile b/docker/irods/ubuntu/22.04/Dockerfile index 7473020..62ad998 100644 --- a/docker/irods/ubuntu/22.04/Dockerfile +++ b/docker/irods/ubuntu/22.04/Dockerfile @@ -1,7 +1,10 @@ ARG BASE_IMAGE=ub-22.04-base FROM $BASE_IMAGE -ARG IRODS_VERSION="nightly" +# The default is the latest usable version +ARG IRODS_VERSION="4.3.1" +# This is the Debian package revision number +ARG IRODS_REVISION="0" WORKDIR /opt/docker/irods @@ -32,22 +35,22 @@ ENV LANG=en_GB.UTF-8 \ LANGUAGE=en_GB \ LC_ALL=en_GB.UTF-8 -# Required to get the externals packages 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 && \ - apt-get update - -ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ - -RUN curl -sSL \ - -O ${NIGHTLY_URL_BASE}irods-database-plugin-postgres_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-dev_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-server_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb - -RUN ls -l && apt-get install -y ./*.deb + apt-get update && \ + apt-get install -q -y --no-install-recommends \ + irods-server="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-database-plugin-postgres="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-dev="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" && \ + apt-get install -q -y -f && \ + 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/* RUN /opt/docker/irods/scripts/create_database.sh && \ /opt/docker/irods/scripts/configure_irods.sh diff --git a/docker/irods/ubuntu/22.04/Dockerfile.nightly b/docker/irods/ubuntu/22.04/Dockerfile.nightly new file mode 100644 index 0000000..80424b8 --- /dev/null +++ b/docker/irods/ubuntu/22.04/Dockerfile.nightly @@ -0,0 +1,60 @@ +ARG BASE_IMAGE=ub-22.04-base +FROM $BASE_IMAGE + +ARG IRODS_VERSION="nightly" + +WORKDIR /opt/docker/irods + +COPY ./scripts/*.sh ./scripts/ +COPY ./config/* ./config/ +COPY ./patches/* ./patches/ + +RUN echo "debconf debconf/frontend select Noninteractive" | debconf-set-selections && \ + apt-get update && \ + apt-get install -q -y --no-install-recommends \ + apt-utils \ + ca-certificates \ + curl \ + gpg \ + gpg-agent \ + lsb-release \ + jq \ + netcat \ + patch \ + postgresql \ + rsyslog \ + unattended-upgrades \ + 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 + +# Required to get the externals packages +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 && \ + apt-get update + +ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ + +RUN curl -sSL \ + -O ${NIGHTLY_URL_BASE}irods-database-plugin-postgres_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-dev_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-server_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb + +RUN ls -l && apt-get update && apt-get install -y ./*.deb + +RUN /opt/docker/irods/scripts/create_database.sh && \ + /opt/docker/irods/scripts/configure_irods.sh + +EXPOSE 1247 + +HEALTHCHECK --interval=10s --timeout=30s --start-period=5s --retries=3 CMD [ "nc", "-v", "-z", "localhost", "1247" ] + +ENTRYPOINT [] +CMD ["/opt/docker/irods/scripts/start_irods.sh"] diff --git a/docker/irods/ubuntu/22.04/README.md b/docker/irods/ubuntu/22.04/README.md index 06fdd1a..49ac0ab 100644 --- a/docker/irods/ubuntu/22.04/README.md +++ b/docker/irods/ubuntu/22.04/README.md @@ -12,7 +12,7 @@ The iRODS server starts with a single user 'irods' configured. To run the container (with iCAT port binding to the host machine): -`docker run -d --name irods -p 1247:1247 wtsi-npg/ub-18.04-irods-[VERSION]:latest` +`docker run -d --name irods -p 1247:1247 wtsi-npg/ub-22.04-irods-[VERSION]:latest` where [VERSION] is the required release e.g. 4.3.0 diff --git a/docker/irods_clients/ubuntu/16.04/Dockerfile b/docker/irods_clients/ubuntu/16.04/Dockerfile index 0a22738..e8b0fd2 100644 --- a/docker/irods_clients/ubuntu/16.04/Dockerfile +++ b/docker/irods_clients/ubuntu/16.04/Dockerfile @@ -1,18 +1,27 @@ # syntax=docker/dockerfile:1 -ARG BASE_IMAGE=ubuntu:16.04 -FROM $BASE_IMAGE as installer +# Set defaults for all build stages -# This default is the latest usable version +# The latest usable version ARG IRODS_VERSION="4.2.7" -# These defaults are the latest usable versions +# The latest usable versions ARG BATON_VERSION="4.2.1" ARG HTSLIB_VERSION="1.18" ARG SAMTOOLS_VERSION="1.18" ARG BCFTOOLS_VERSION="1.18" ARG HTSLIB_PLUGINS_VERSION="201712" +ARG BASE_IMAGE=ubuntu:16.04 +FROM $BASE_IMAGE as installer + +ARG IRODS_VERSION +ARG BATON_VERSION +ARG HTSLIB_VERSION +ARG SAMTOOLS_VERSION +ARG BCFTOOLS_VERSION +ARG HTSLIB_PLUGINS_VERSION + COPY . /opt/docker/irods_clients RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ @@ -105,7 +114,7 @@ FROM $BASE_IMAGE ARG DOCKER_IMAGE ARG DOCKER_TAG -ARG IRODS_VERSION="4.2.7" +ARG IRODS_VERSION RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ apt-get update && \ diff --git a/docker/irods_clients/ubuntu/Dockerfile b/docker/irods_clients/ubuntu/18.04/Dockerfile similarity index 86% rename from docker/irods_clients/ubuntu/Dockerfile rename to docker/irods_clients/ubuntu/18.04/Dockerfile index 78bfee8..6598f19 100644 --- a/docker/irods_clients/ubuntu/Dockerfile +++ b/docker/irods_clients/ubuntu/18.04/Dockerfile @@ -1,18 +1,30 @@ # syntax=docker/dockerfile:1 -ARG BASE_IMAGE=ubuntu:18.04 -FROM $BASE_IMAGE as installer +# Set defaults for all build stages -# This default is the latest usable version -ARG IRODS_VERSION="4.2.11" +# The latest usable version +ARG IRODS_VERSION="4.3.1" +# The Debian package revision number +ARG IRODS_REVISION="1" -# These defaults are the latest usable versions +# The latest usable versions ARG BATON_VERSION="4.2.1" ARG HTSLIB_VERSION="1.18" ARG SAMTOOLS_VERSION="1.18" ARG BCFTOOLS_VERSION="1.18" ARG HTSLIB_PLUGINS_VERSION="201712" +ARG BASE_IMAGE=ubuntu:18.04 +FROM $BASE_IMAGE as installer + +ARG IRODS_VERSION +ARG IRODS_REVISION +ARG BATON_VERSION +ARG HTSLIB_VERSION +ARG SAMTOOLS_VERSION +ARG BCFTOOLS_VERSION +ARG HTSLIB_PLUGINS_VERSION + COPY . /opt/docker/irods_clients RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ @@ -38,9 +50,9 @@ RUN curl -sSL https://packages.irods.org/irods-signing-key.asc | apt-key add - & tee /etc/apt/sources.list.d/renci-irods.list && \ apt-get update && \ apt-get install -q -y --no-install-recommends \ - irods-dev="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-runtime="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-icommands="${IRODS_VERSION}-1~$(lsb_release -sc)" + irods-dev="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" RUN apt-key add - < /opt/docker/irods_clients/keys/git-core-ppa.asc && \ echo "deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu $(lsb_release -sc) main" |\ @@ -104,7 +116,8 @@ FROM $BASE_IMAGE ARG DOCKER_IMAGE ARG DOCKER_TAG -ARG IRODS_VERSION="4.2.11" +ARG IRODS_VERSION +ARG IRODS_REVISION RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ apt-get update && \ @@ -129,8 +142,8 @@ RUN curl -sSL https://packages.irods.org/irods-signing-key.asc | apt-key add - & tee /etc/apt/sources.list.d/renci-irods.list && \ apt-get update && \ apt-get install -q -y --no-install-recommends \ - irods-icommands="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-runtime="${IRODS_VERSION}-1~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ jq \ libbz2-1.0 \ libcurl3 \ diff --git a/docker/irods_clients/ubuntu/README.md b/docker/irods_clients/ubuntu/18.04/README.md similarity index 97% rename from docker/irods_clients/ubuntu/README.md rename to docker/irods_clients/ubuntu/18.04/README.md index 8ab7752..ead9823 100644 --- a/docker/irods_clients/ubuntu/README.md +++ b/docker/irods_clients/ubuntu/18.04/README.md @@ -19,7 +19,7 @@ The Dockerfile supports these build arguments: - BASE_IMAGE (defaults to "ubuntu:18.04") - DOCKER_IMAGE (no default, must be supplied) - DOCKER_TAG (no default, must be supplied) -- IRODS_VERSION (defaults to "4.2.11") +- IRODS_VERSION (defaults to the latest usable iRODS version, currently "4.3.1") - BATON_VERSION (defaults to "4.2.1") - HTSLIB_VERSION (defaults to "1.18") - SAMTOOLS_VERSION (defaults to "1.18") diff --git a/docker/irods_clients/ubuntu/22.04/Dockerfile b/docker/irods_clients/ubuntu/22.04/Dockerfile index f3552fd..bb99212 100644 --- a/docker/irods_clients/ubuntu/22.04/Dockerfile +++ b/docker/irods_clients/ubuntu/22.04/Dockerfile @@ -1,9 +1,11 @@ # syntax=docker/dockerfile:1 -ARG BASE_IMAGE=ubuntu:22.04 -FROM $BASE_IMAGE as installer +# Set defaults for all build stages -ARG IRODS_VERSION="4.3-nightly" +# The latest usable version +ARG IRODS_VERSION="4.3.1" +# The Debian package revision number +ARG IRODS_REVISION="0" # These defaults are the latest usable versions ARG BATON_VERSION="4.2.1" @@ -12,6 +14,18 @@ ARG SAMTOOLS_VERSION="1.18" ARG BCFTOOLS_VERSION="1.18" ARG HTSLIB_PLUGINS_VERSION="201712" +ARG BASE_IMAGE=ubuntu:22.04 +FROM $BASE_IMAGE as installer + +# Use defaults +ARG IRODS_VERSION +ARG IRODS_REVISION +ARG BATON_VERSION +ARG HTSLIB_VERSION +ARG SAMTOOLS_VERSION +ARG BCFTOOLS_VERSION +ARG HTSLIB_PLUGINS_VERSION + COPY . /opt/docker/irods_clients RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ @@ -35,16 +49,11 @@ ENV LANG=en_GB.UTF-8 \ 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 && \ - apt-get update - -ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ - -RUN curl -sSL \ - -O ${NIGHTLY_URL_BASE}irods-dev_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb - -RUN ls -l && apt-get install -y ./*.deb + apt-get update && \ + apt-get install -q -y --no-install-recommends \ + irods-dev="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" RUN apt-get update && \ apt-get install -q -y --no-install-recommends \ @@ -57,7 +66,6 @@ RUN apt-get update && \ python3-sphinx \ libbz2-dev \ libcurl3-dev \ - libdeflate-dev \ libjansson-dev \ liblzma-dev \ zlib1g-dev @@ -102,7 +110,8 @@ FROM $BASE_IMAGE ARG DOCKER_IMAGE ARG DOCKER_TAG -ARG IRODS_VERSION="4.3-nightly" +ARG IRODS_VERSION +ARG IRODS_REVISION RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ apt-get update && \ @@ -125,17 +134,10 @@ ENV LANG=en_GB.UTF-8 \ 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 && \ - apt-get update - -ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ - -RUN curl -sSL \ - -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb - -RUN ls -l && apt-get install -y ./*.deb - -RUN apt-get install -q -y --no-install-recommends \ + apt-get update && \ + apt-get install -q -y --no-install-recommends \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ jq \ libbz2-1.0 \ libcurl4 \ diff --git a/docker/irods_clients/ubuntu/22.04/Dockerfile.nightly b/docker/irods_clients/ubuntu/22.04/Dockerfile.nightly new file mode 100644 index 0000000..963f3ce --- /dev/null +++ b/docker/irods_clients/ubuntu/22.04/Dockerfile.nightly @@ -0,0 +1,179 @@ +# syntax=docker/dockerfile:1 + +# Set defaults for all build stages + +ARG IRODS_VERSION="4.3-nightly" + +# The latest usable versions +ARG BATON_VERSION="4.2.1" +ARG HTSLIB_VERSION="1.18" +ARG SAMTOOLS_VERSION="1.18" +ARG BCFTOOLS_VERSION="1.18" +ARG HTSLIB_PLUGINS_VERSION="201712" + +ARG BASE_IMAGE=ubuntu:22.04 +FROM $BASE_IMAGE as installer + +ARG IRODS_VERSION +ARG BATON_VERSION +ARG HTSLIB_VERSION +ARG SAMTOOLS_VERSION +ARG BCFTOOLS_VERSION +ARG HTSLIB_PLUGINS_VERSION + +COPY . /opt/docker/irods_clients + +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ + 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 + +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 && \ + apt-get update + +ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ + +RUN curl -sSL \ + -O ${NIGHTLY_URL_BASE}irods-dev_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb + +RUN ls -l && apt-get update && apt-get install -y ./*.deb + +RUN apt-get update && \ + apt-get install -q -y --no-install-recommends \ + autoconf \ + automake \ + build-essential \ + git \ + libtool \ + pkg-config \ + python3-sphinx \ + libbz2-dev \ + libcurl3-dev \ + libdeflate-dev \ + libjansson-dev \ + liblzma-dev \ + zlib1g-dev + +ENV CPPFLAGS="-I/usr/include/irods" + +RUN cd /tmp && \ + curl -sSL -O "https://github.com/wtsi-npg/baton/releases/download/${BATON_VERSION}/baton-${BATON_VERSION}.tar.gz" && \ + tar xfz baton-${BATON_VERSION}.tar.gz && \ + cd baton-${BATON_VERSION} && \ + ./configure && \ + make install + +RUN cd /tmp && \ + curl -sSL -O "https://github.com/samtools/htslib/releases/download/${HTSLIB_VERSION}/htslib-${HTSLIB_VERSION}.tar.bz2" && \ + tar xfj htslib-${HTSLIB_VERSION}.tar.bz2 && \ + cd htslib-${HTSLIB_VERSION} && \ + ./configure --enable-plugins --without-curses && \ + make install && \ + ldconfig + +RUN cd /tmp && \ + curl -sSL -O "https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2" && \ + tar xfj samtools-${SAMTOOLS_VERSION}.tar.bz2 && \ + cd samtools-${SAMTOOLS_VERSION} && \ + ./configure --with-htslib=system --without-curses && \ + make install + +RUN cd /tmp && \ + curl -sSL -O "https://github.com/samtools/bcftools/releases/download/${BCFTOOLS_VERSION}/bcftools-${BCFTOOLS_VERSION}.tar.bz2" && \ + tar xfj bcftools-${BCFTOOLS_VERSION}.tar.bz2 && \ + cd bcftools-${BCFTOOLS_VERSION} && \ + ./configure --with-htslib=system --without-curses && \ + make install + +RUN cd /tmp && \ + git clone --depth 1 --branch ${HTSLIB_PLUGINS_VERSION} "https://github.com/samtools/htslib-plugins.git" && \ + cd htslib-plugins && \ + make install + +FROM $BASE_IMAGE + +ARG DOCKER_IMAGE +ARG DOCKER_TAG +ARG IRODS_VERSION + +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ + 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 + +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 && \ + apt-get update + +ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ + +RUN curl -sSL \ + -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb + +RUN ls -l && apt-get update && apt-get install -y ./*.deb + +RUN apt-get install -q -y --no-install-recommends \ + jq \ + libbz2-1.0 \ + libcurl4 \ + libdeflate0 \ + libjansson4 \ + 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/* + +# Copy the installed baton and samtools applications +COPY --from=installer /usr/local /usr/local + +# Copy the singularity-wrapper scripts +COPY --from=singularity ./scripts/* /usr/local/bin/ +COPY --from=installer /opt/docker/irods_clients/manifest.txt /usr/local/irods_clients/etc/manifest.txt +COPY --from=installer /opt/docker/irods_clients/scripts/docker-entrypoint.sh /usr/local/irods_clients/bin/docker-entrypoint.sh + +# Configure the singularity-wrapper script +ENV MANIFEST_PATH="/usr/local/irods_clients/etc/manifest.txt" +ENV DOCKER_IMAGE="$DOCKER_IMAGE" +ENV DOCKER_TAG="$DOCKER_TAG" + +RUN ldconfig + +ENTRYPOINT ["/usr/local/irods_clients/bin/docker-entrypoint.sh"] + +CMD ["/bin/bash"] diff --git a/docker/irods_clients/ubuntu/22.04/README.md b/docker/irods_clients/ubuntu/22.04/README.md new file mode 100644 index 0000000..512860e --- /dev/null +++ b/docker/irods_clients/ubuntu/22.04/README.md @@ -0,0 +1,68 @@ +# Ubuntu iRODS clients + +## Summary + +An image with iRODS clients installed. + + - [iRODS icommands](https://github.com/irods/irods_client_icommands) + - [baton](https://github.com/wtsi-npg/baton) + - [samtools](https://github.com/samtools/samtools), with the htslib [iRODS plugin](https://github.com/samtools/htslib-plugins) + +This image is intended for use anywhere that container clients are +required. It uses clients supplied by RENCI as Debian packages, or built +from source where packages are not available. + +## Usage + +The Dockerfile supports these build arguments: + +- BASE_IMAGE (defaults to "ubuntu:22.04") +- DOCKER_IMAGE (no default, must be supplied) +- DOCKER_TAG (no default, must be supplied) +- IRODS_VERSION (defaults to the latest usable iRODS version, currently "4.3.1") +- BATON_VERSION (defaults to "4.2.1") +- HTSLIB_VERSION (defaults to "1.18") +- SAMTOOLS_VERSION (defaults to "1.18") +- BCFTOOLS_VERSION (defaults to "1.18") +- HTSLIB_PLUGINS_VERSION (defaults to "201712") + +### As a shell for interacting with iRODS + +The entrypoint for this image creates a local user `irodsuser` with a +`UID` of `1001` whose `IRODS_ENVIRONMENT_FILE` is set to +`/home/irodsuser/.irods/irods_environment.json`. The entrypoint has the +following shell environment variables available to be set with the `-e` +option: + + CLIENT_USER_ID # defaults to 1001 + CLIENT_USER # defaults to irodsuser + CLIENT_USER_HOME # defaults to /home/${CLIENT_USER} + IRODS_ENVIRONMENT_FILE # defaults to ${CLIENT_USER_HOME}/.irods/irods_environment.json + +The iRODS user's home directory is not created automatically, the intention +being to allow a host volume to be mounted there. + +### As a replacement for native clients + +The recommended way to use these clients as a direct replacement for +e.g. the icommands (`ils`, `iget` etc), is via the wrapper script +`irods_client_wrapper.sh` in `irods_clients/scripts`, which relies on +having a container already running. The script should be symlinked, +once for each desired client, to the desired client name: + +E.g. + + ln -s irods_client_wrapper.sh ./bin/ils + ln -s irods_client_wrapper.sh ./bin/iget + ln -s irods_client_wrapper.sh ./bin/imeta + +Executing the script through each of these symlinks will invoke the +respective client within the container. + +The `irods_clients/scripts` directory contains an example container +startup script, `start_client_container.sh`. It is intended only as an +example of how to start the container because it mounts the entire +user `$HOME` into it, which is not recommended for security and +performance reasons. Instead, it is prefereable to bring up the +container as part of a Docker Compose configuration, with directory +mounts of a more limited scope. diff --git a/docker/irods_clients_dev/ubuntu/16.04/Dockerfile b/docker/irods_clients_dev/ubuntu/16.04/Dockerfile index 5741fe3..281ba53 100644 --- a/docker/irods_clients_dev/ubuntu/16.04/Dockerfile +++ b/docker/irods_clients_dev/ubuntu/16.04/Dockerfile @@ -1,7 +1,7 @@ ARG BASE_IMAGE=ubuntu:16.04 FROM $BASE_IMAGE -# This default is the latest usable version +# The latest usable version ARG IRODS_VERSION="4.2.7" COPY . /opt/docker/irods_clients_dev diff --git a/docker/irods_clients_dev/ubuntu/Dockerfile b/docker/irods_clients_dev/ubuntu/18.04/Dockerfile similarity index 82% rename from docker/irods_clients_dev/ubuntu/Dockerfile rename to docker/irods_clients_dev/ubuntu/18.04/Dockerfile index addbb41..f47415f 100644 --- a/docker/irods_clients_dev/ubuntu/Dockerfile +++ b/docker/irods_clients_dev/ubuntu/18.04/Dockerfile @@ -1,8 +1,10 @@ ARG BASE_IMAGE=ubuntu:18.04 FROM $BASE_IMAGE -# This default is is latest usable version -ARG IRODS_VERSION="4.2.12" +# The latest usable version +ARG IRODS_VERSION="4.3.1" +# The Debian package revision number +ARG IRODS_REVISION="1" COPY . /opt/docker/irods_clients_dev @@ -29,9 +31,9 @@ RUN curl -sSL https://packages.irods.org/irods-signing-key.asc | apt-key add - & tee /etc/apt/sources.list.d/renci-irods.list && \ apt-get update && \ apt-get install -q -y --no-install-recommends \ - irods-dev="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-runtime="${IRODS_VERSION}-1~$(lsb_release -sc)" \ - irods-icommands="${IRODS_VERSION}-1~$(lsb_release -sc)" + irods-dev="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" RUN apt-key add - < /opt/docker/irods_clients_dev/keys/git-core-ppa.asc && \ echo "deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu $(lsb_release -sc) main" |\ diff --git a/docker/irods_clients_dev/README.md b/docker/irods_clients_dev/ubuntu/18.04/README.md similarity index 89% rename from docker/irods_clients_dev/README.md rename to docker/irods_clients_dev/ubuntu/18.04/README.md index 7f1f950..c8ef415 100644 --- a/docker/irods_clients_dev/README.md +++ b/docker/irods_clients_dev/ubuntu/18.04/README.md @@ -20,4 +20,4 @@ This image will create a development container suitable for The Dockerfile supports two build arguments: - BASE_IMAGE (defaults to "ubuntu:18.04") -- IRODS_VERSION (defaults to "4.2.11") +- IRODS_VERSION (defaults to the latest usable iRODS version, currently "4.3.1") diff --git a/docker/irods_clients_dev/ubuntu/22.04/Dockerfile b/docker/irods_clients_dev/ubuntu/22.04/Dockerfile index ca47d27..1562b6d 100644 --- a/docker/irods_clients_dev/ubuntu/22.04/Dockerfile +++ b/docker/irods_clients_dev/ubuntu/22.04/Dockerfile @@ -1,7 +1,12 @@ ARG BASE_IMAGE=ubuntu:22.04 FROM $BASE_IMAGE -ARG IRODS_VERSION="4.3-nightly" +# The latest usable version +ARG IRODS_VERSION="4.3.1" +# The Debian package revision number +ARG IRODS_REVISION="0" + +COPY . /opt/docker/irods_clients_dev RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ apt-get update && \ @@ -24,16 +29,11 @@ ENV LANG=en_GB.UTF-8 \ 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 && \ - apt-get update - -ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ - -RUN curl -sSL \ - -O ${NIGHTLY_URL_BASE}irods-dev_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ - -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb - -RUN ls -l && apt-get update && apt-get install -y ./*.deb + apt-get update && \ + apt-get install -q -y --no-install-recommends \ + irods-dev="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-runtime="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" \ + irods-icommands="${IRODS_VERSION}-${IRODS_REVISION}~$(lsb_release -sc)" RUN apt-get update && \ apt-get install -q -y --no-install-recommends \ diff --git a/docker/irods_clients_dev/ubuntu/22.04/Dockerfile.nightly b/docker/irods_clients_dev/ubuntu/22.04/Dockerfile.nightly new file mode 100644 index 0000000..ca47d27 --- /dev/null +++ b/docker/irods_clients_dev/ubuntu/22.04/Dockerfile.nightly @@ -0,0 +1,63 @@ +ARG BASE_IMAGE=ubuntu:22.04 +FROM $BASE_IMAGE + +ARG IRODS_VERSION="4.3-nightly" + +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \ + 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 + +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 && \ + apt-get update + +ENV NIGHTLY_URL_BASE=https://github.com/wtsi-npg/irods_development_environment/releases/download/nightly/ + +RUN curl -sSL \ + -O ${NIGHTLY_URL_BASE}irods-dev_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-runtime_4.3.1-0.jammy_amd64.deb \ + -O ${NIGHTLY_URL_BASE}irods-icommands_4.3.1-0.jammy_amd64.deb + +RUN ls -l && apt-get update && apt-get install -y ./*.deb + +RUN apt-get update && \ + apt-get install -q -y --no-install-recommends \ + autoconf \ + automake \ + build-essential \ + check \ + cmake \ + gdb \ + git \ + jq \ + lcov \ + less \ + libjansson-dev \ + libtool \ + netcat \ + pkg-config \ + python3-sphinx \ + ssh \ + valgrind \ + unattended-upgrades && \ + unattended-upgrade -v + +ENV CPPFLAGS="-I/usr/include/irods" \ + CK_DEFAULT_TIMEOUT=20 + +CMD ["/bin/bash"] diff --git a/docker/irods_clients_dev/ubuntu/22.04/README.md b/docker/irods_clients_dev/ubuntu/22.04/README.md new file mode 100644 index 0000000..09b18c5 --- /dev/null +++ b/docker/irods_clients_dev/ubuntu/22.04/README.md @@ -0,0 +1,23 @@ +# Ubuntu iRODS client development + +## Summary + +An image aimed at development of command line iRODS clients. + + - C development tools, including GCC, GDB, autoconf, automake, libtool + pkg-config and valgrind. + - [iRODS runtime and development packages](https://github.com/irods/irods) + - [iRODS icommands](https://github.com/irods/irods_client_icommands) + - [Dependencies required by baton](https://github.com/wtsi-npg/baton) + +This image is intended for use anywhere that iRODS C clients are built. + +## Usage + +This image will create a development container suitable for +[baton](https://github.com/wtsi-npg/baton) and other iRODS clients. + +The Dockerfile supports two build arguments: + +- BASE_IMAGE (defaults "ubuntu:22.04") +- IRODS_VERSION (defaults to the latest usable iRODS version, currently "4.3.1")