diff --git a/Dockerfile-server b/Dockerfile-server index 5c0d043..0ca6d40 100644 --- a/Dockerfile-server +++ b/Dockerfile-server @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -ARG BASE_IMAGE=registry.access.redhat.com/ubi7/ubi-minimal -ARG BASE_TAG=7.7-98 +ARG BASE_IMAGE=registry.redhat.io/ubi8/ubi-minimal +ARG BASE_TAG=8.1-279 ############################################################################### # Build stage to build Go code ############################################################################### -FROM registry.access.redhat.com/devtools/go-toolset-rhel7:1.11.13 as builder +FROM registry.redhat.io/rhel8/go-toolset:1.12.8-11 as builder # FROM docker.io/centos/go-toolset-7-centos7 as builder # The URL to download the MQ installer from in tar.gz format # This assumes an archive containing the MQ RPM install packages diff --git a/Makefile b/Makefile index 254798a..b9d0941 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,10 @@ MQ_PACKAGES ?=MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSer MQM_UID ?= 888 # COMMAND is the container command to run. "podman" or "docker" COMMAND ?=$(shell type -p podman 2>&1 >/dev/null && echo podman || echo docker) +# REGISTRY_USER is the username used to login to the Red Hat registry +REGISTRY_USER ?= +# REGISTRY_PASS is the password used to login to the Red Hat registry +REGISTRY_PASS ?= ############################################################################### # Other variables @@ -229,7 +233,7 @@ endif build-advancedserver-host: build-advancedserver .PHONY: build-advancedserver -build-advancedserver: log-build-env downloads/$(MQ_ARCHIVE) command-version +build-advancedserver: registry-login log-build-env downloads/$(MQ_ARCHIVE) command-version $(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_ADVANCEDSERVER):$(MQ_TAG)"$(END))) $(call build-mq,$(MQ_IMAGE_ADVANCEDSERVER),$(MQ_TAG),Dockerfile-server,$(MQ_ARCHIVE),mq-server) @@ -237,23 +241,29 @@ build-advancedserver: log-build-env downloads/$(MQ_ARCHIVE) command-version build-devserver-host: build-devserver .PHONY: build-devserver -build-devserver: log-build-env downloads/$(MQ_ARCHIVE_DEV) command-version +build-devserver: registry-login log-build-env downloads/$(MQ_ARCHIVE_DEV) command-version $(info $(shell printf $(TITLE)"Build $(MQ_IMAGE_DEVSERVER):$(MQ_TAG)"$(END))) $(call build-mq,$(MQ_IMAGE_DEVSERVER),$(MQ_TAG),Dockerfile-server,$(MQ_ARCHIVE_DEV),mq-dev-server) .PHONY: build-advancedserver-cover -build-advancedserver-cover: command-version +build-advancedserver-cover: registry-login command-version $(COMMAND) build --build-arg BASE_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER):$(MQ_TAG) -t $(MQ_IMAGE_ADVANCEDSERVER):$(MQ_TAG)-cover -f Dockerfile-server.cover . .PHONY: build-explorer -build-explorer: downloads/$(MQ_ARCHIVE_DEV) +build-explorer: registry-login downloads/$(MQ_ARCHIVE_DEV) $(call build-mq,mq-explorer,latest-$(ARCH),incubating/mq-explorer/Dockerfile,$(MQ_ARCHIVE_DEV),mq-explorer) .PHONY: build-sdk -build-sdk: downloads/$(MQ_ARCHIVE_DEV) +build-sdk: registry-login downloads/$(MQ_ARCHIVE_DEV) $(info $(shell printf $(TITLE)"Build $(MQ_IMAGE_SDK)"$(END))) $(call build-mq,mq-sdk,$(MQ_TAG),incubating/mq-sdk/Dockerfile,$(MQ_SDK_ARCHIVE),mq-sdk) +.PHONY: registry-login +registry-login: +ifneq ($(REGISTRY_USER),) + $(COMMAND) login -u $(REGISTRY_USER) -p $(REGISTRY_PASS) registry.redhat.io +endif + .PHONY: log-build-env log-build-vars: $(info $(SPACER)$(shell printf $(TITLE)"Build environment"$(END))) @@ -264,6 +274,7 @@ log-build-vars: @echo MQ_IMAGE_ADVANCEDSERVER=$(MQ_IMAGE_ADVANCEDSERVER) @echo COMMAND=$(COMMAND) @echo MQM_UID=$(MQM_UID) + @echo REGISTRY_USER=$(REGISTRY_USER) .PHONY: log-build-env log-build-env: log-build-vars diff --git a/docs/building.md b/docs/building.md index 8d8b5c9..fc3db8e 100644 --- a/docs/building.md +++ b/docs/building.md @@ -9,13 +9,16 @@ You need to have the following tools installed: If you are working in the Windows Subsystem for Linux, follow [this guide by Microsoft to set up Docker](https://blogs.msdn.microsoft.com/commandline/2017/12/08/cross-post-wsl-interoperability-with-docker/) first. +You will also need a [Red Hat Account](https://access.redhat.com) to be able to access the Red Hat Registry. + ## Building a production image This procedure works for building the MQ Continuous Delivery release, on `amd64`, `ppc64le` and `s390x` architectures. 1. Create a `downloads` directory in the root of this repository 2. Download MQ from [IBM Passport Advantage](https://www.ibm.com/software/passportadvantage/) or [IBM Fix Central](https://www.ibm.com/support/fixcentral), and place the downloaded file (for example, `IBM_MQ_9.1.3_LINUX_X86-64.tar.gz`) in the `downloads` directory -3. Run `make build-advancedserver` +3. Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials. +4. Run `make build-advancedserver` > **Warning**: Note that MQ offers two different sets of packaging on Linux: one is called "MQ for Linux" and contains RPM files for installing on Red Hat Enterprise Linux and SUSE Linux Enterprise Server; the other is for Ubuntu. The MQ container build uses a Red Hat Universal Base Image, so you need the "MQ for Linux" RPM files. @@ -26,6 +29,8 @@ MQ_ARCHIVE=mq-1.2.3.4.tar.gz MQ_VERSION=1.2.3.4 make build-advancedserver ``` ## Building a developer image + +Login to the Red Hat Registry: `docker login registry.redhat.io` using your Customer Portal credentials. Run `make build-devserver`, which will download the latest version of MQ Advanced for Developers from IBM developerWorks. This is currently only available on the `amd64` architecture. You can use the environment variable `MQ_ARCHIVE_DEV` to specify an alternative local file to install from (which must be in the `downloads` directory). diff --git a/incubating/mq-explorer/Dockerfile b/incubating/mq-explorer/Dockerfile index 2ec8095..e5e136e 100644 --- a/incubating/mq-explorer/Dockerfile +++ b/incubating/mq-explorer/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM registry.access.redhat.com/ubi7/ubi-minimal AS mq-explorer +FROM registry.redhat.io/ubi8/ubi-minimal AS mq-explorer # The URL to download the MQ installer from in tar.gz format ARG MQ_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/mqadv_dev912_linux_x86-64.tar.gz" @@ -22,7 +22,7 @@ ENV MQ_PACKAGES="MQSeriesRuntime*.rpm MQSeriesJRE*.rpm MQSeriesExplorer*.rpm" ARG MQM_UID=888 -RUN microdnf install -y --nodocs gtk2 libXtst \ +RUN microdnf install -y gtk2 libXtst \ && microdnf clean all ADD install-mq.sh /usr/local/bin/ diff --git a/incubating/mq-sdk/Dockerfile b/incubating/mq-sdk/Dockerfile index f12b9bd..66175c5 100644 --- a/incubating/mq-sdk/Dockerfile +++ b/incubating/mq-sdk/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM registry.access.redhat.com/rhscl/devtoolset-7-toolchain-rhel7 AS mq-sdk +FROM registry.redhat.io/rhscl/devtoolset-8-toolchain-rhel7 AS mq-sdk #FROM docker.io/centos/devtoolset-7-toolchain-centos7 AS mq-sdk # The URL to download the MQ installer from in tar.gz format diff --git a/incubating/mqadvanced-server-dev/install-extra-packages.sh b/incubating/mqadvanced-server-dev/install-extra-packages.sh index 3702bed..0535015 100644 --- a/incubating/mqadvanced-server-dev/install-extra-packages.sh +++ b/incubating/mqadvanced-server-dev/install-extra-packages.sh @@ -15,6 +15,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Fail on any non-zero return code +set -ex + test -f /usr/bin/yum && YUM=true || YUM=false test -f /usr/bin/microdnf && MICRODNF=true || MICRODNF=false test -f /usr/bin/apt-get && UBUNTU=true || UBUNTU=false @@ -33,6 +36,6 @@ if ($YUM); then fi if ($MICRODNF); then - microdnf install --nodocs sudo + microdnf install sudo microdnf clean all fi \ No newline at end of file diff --git a/install-mq-server-prereqs.sh b/install-mq-server-prereqs.sh index 5bf4747..54ff326 100644 --- a/install-mq-server-prereqs.sh +++ b/install-mq-server-prereqs.sh @@ -63,10 +63,10 @@ if ($UBUNTU); then fi if ($RPM); then - EXTRA_RPMS="bash bc ca-certificates coreutils file findutils gawk glibc-common grep passwd procps-ng sed shadow-utils tar util-linux which" + EXTRA_RPMS="bash bc ca-certificates file findutils gawk glibc-common grep passwd procps-ng sed shadow-utils tar util-linux which" # Install additional packages required by MQ, this install process and the runtime scripts $YUM && yum -y install --setopt install_weak_deps=false ${EXTRA_RPMS} - $MICRODNF && microdnf install --nodocs ${EXTRA_RPMS} + $MICRODNF && microdnf install ${EXTRA_RPMS} fi # Apply any bug fixes not included in base Ubuntu or MQ image. diff --git a/install-mq.sh b/install-mq.sh index 7b4797b..48c4543 100644 --- a/install-mq.sh +++ b/install-mq.sh @@ -104,6 +104,10 @@ sed -i 's/password\t\[success=1 default=ignore\]\tpam_unix\.so obscure sha512/pa $RPM && rpm -q --all || true $UBUNTU && dpkg --list || true +#Update the license file to include UBI 8 instead of UBI 7 +sed -i 's/v7.0/v8.0/g' /opt/mqm/licenses/non_ibm_license.txt + # Copy MQ Licenses into the correct location mkdir -p /licenses cp /opt/mqm/licenses/*.txt /licenses/ +