From 60c1e8327048e0e5872787d92db68cda6f87fa03 Mon Sep 17 00:00:00 2001 From: Dom Storey Date: Mon, 11 Dec 2023 13:58:19 +0000 Subject: [PATCH 1/2] 12.0.10.0-r2 update --- .travis.yml | 27 ++-- Dockerfile | 19 +-- README.md | 4 +- asoc/appscan-config.xml | 8 ++ experimental/README.md | 51 +++++-- experimental/ace-basic/Dockerfile.mqclient | 46 +++++++ experimental/ace-basic/Dockerfile.ubuntu | 32 +++-- experimental/ace-dev-edition-download.png | Bin 0 -> 9964 bytes experimental/ace-full/Dockerfile.ubuntu | 26 ++-- experimental/ace-full/README.md | 5 + experimental/ace-minimal/Dockerfile.alpine | 54 +++++--- .../ace-minimal/Dockerfile.alpine-java11 | 129 ++++++++++++++++++ experimental/ace-minimal/Dockerfile.ubuntu | 30 ++-- experimental/ace-minimal/README.md | 27 ++++ experimental/ace-minimal/excludes-java11.txt | 1 + .../ace-minimal/excludes-telemetry.txt | 2 + .../ace-minimal/minimal-image.components.yaml | 37 +++++ .../Dockerfile-no-ace.alpine-openjdk14 | 0 .../{ => old}/Dockerfile.alpine-ibmjre | 0 .../{ => old}/Dockerfile.alpine-openjdk14 | 0 .../{ => old}/Dockerfile.alpine-openjdk16 | 0 .../ace-minimal/{ => old}/ibmjava-paths.sh | 0 .../ace-minimal/{ => old}/openjdk14-paths.sh | 0 .../ace-minimal/{ => old}/openjdk16-paths.sh | 0 .../{ => old}/profile-with-ibmjava-paths.sh | 0 .../{ => old}/profile-with-openjdk14-paths.sh | 0 .../{ => old}/profile-with-openjdk16-paths.sh | 0 .../ace-minimal/product-java11-paths.sh | 21 +++ .../profile-with-product-java11-paths.sh | 24 ++++ experimental/build-all.sh | 31 +++-- experimental/devcontainers/Dockerfile | 25 ++-- .../devcontainers/Dockerfile.ace-minimal | 28 ++-- .../devcontainers/Dockerfile.mqclient | 27 ++-- .../devcontainers/excludes-java11.txt | 1 + .../devcontainers/excludes-nodejs-all.txt | 2 + .../devcontainers/excludes-telemetry.txt | 2 + .../minimal-image.components.yaml | 37 +++++ experimental/windows/README.md | 10 ++ experimental/windows/ace-basic/Dockerfile | 27 ++++ experimental/windows/ace-basic/README.md | 50 +++++++ .../ace-dev-edition-download-windows.png | Bin 0 -> 6099 bytes .../windows/ace-basic/download-ace.cmd | 11 ++ .../ace-basic/download-and-install-ace.cmd | 68 +++++++++ .../windows/ace-basic/install-ace.cmd | 13 ++ experimental/windows/ace-basic/unpack-ace.cmd | 7 + experimental/windows/ace-sample/Dockerfile | 15 ++ experimental/windows/ace-sample/README.md | 18 +++ .../windows/ace-sample/aceFunction-PI.zip | Bin 0 -> 8438 bytes .../windows/ace-sample/aceFunction.bar | Bin 0 -> 6775 bytes experimental/windows/server2016/Dockerfile | 16 --- experimental/windows/server2019/Dockerfile | 16 --- experimental/windows/server2022/Dockerfile | 16 --- samples/bars/Dockerfile | 5 +- samples/bars/README.md | 4 +- samples/mqclient/Dockerfile | 4 +- samples/mqclient/README.md | 6 +- samples/mqclient/install-mq-client-prereqs.sh | 8 +- samples/scripts/Dockerfile | 6 +- samples/scripts/README.md | 2 +- 59 files changed, 806 insertions(+), 192 deletions(-) create mode 100644 asoc/appscan-config.xml create mode 100644 experimental/ace-basic/Dockerfile.mqclient create mode 100755 experimental/ace-dev-edition-download.png create mode 100644 experimental/ace-minimal/Dockerfile.alpine-java11 create mode 100644 experimental/ace-minimal/README.md create mode 100644 experimental/ace-minimal/excludes-java11.txt create mode 100644 experimental/ace-minimal/excludes-telemetry.txt create mode 100644 experimental/ace-minimal/minimal-image.components.yaml rename experimental/ace-minimal/{ => old}/Dockerfile-no-ace.alpine-openjdk14 (100%) rename experimental/ace-minimal/{ => old}/Dockerfile.alpine-ibmjre (100%) rename experimental/ace-minimal/{ => old}/Dockerfile.alpine-openjdk14 (100%) rename experimental/ace-minimal/{ => old}/Dockerfile.alpine-openjdk16 (100%) rename experimental/ace-minimal/{ => old}/ibmjava-paths.sh (100%) rename experimental/ace-minimal/{ => old}/openjdk14-paths.sh (100%) rename experimental/ace-minimal/{ => old}/openjdk16-paths.sh (100%) rename experimental/ace-minimal/{ => old}/profile-with-ibmjava-paths.sh (100%) rename experimental/ace-minimal/{ => old}/profile-with-openjdk14-paths.sh (100%) rename experimental/ace-minimal/{ => old}/profile-with-openjdk16-paths.sh (100%) create mode 100755 experimental/ace-minimal/product-java11-paths.sh create mode 100755 experimental/ace-minimal/profile-with-product-java11-paths.sh create mode 100644 experimental/devcontainers/excludes-java11.txt create mode 100644 experimental/devcontainers/excludes-nodejs-all.txt create mode 100644 experimental/devcontainers/excludes-telemetry.txt create mode 100644 experimental/devcontainers/minimal-image.components.yaml create mode 100644 experimental/windows/README.md create mode 100644 experimental/windows/ace-basic/Dockerfile create mode 100644 experimental/windows/ace-basic/README.md create mode 100644 experimental/windows/ace-basic/ace-dev-edition-download-windows.png create mode 100644 experimental/windows/ace-basic/download-ace.cmd create mode 100644 experimental/windows/ace-basic/download-and-install-ace.cmd create mode 100644 experimental/windows/ace-basic/install-ace.cmd create mode 100644 experimental/windows/ace-basic/unpack-ace.cmd create mode 100644 experimental/windows/ace-sample/Dockerfile create mode 100644 experimental/windows/ace-sample/README.md create mode 100644 experimental/windows/ace-sample/aceFunction-PI.zip create mode 100644 experimental/windows/ace-sample/aceFunction.bar delete mode 100644 experimental/windows/server2016/Dockerfile delete mode 100644 experimental/windows/server2019/Dockerfile delete mode 100755 experimental/windows/server2022/Dockerfile diff --git a/.travis.yml b/.travis.yml index 2884d76..893ebe4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,19 @@ -sudo: required -dist: xenial -language: generic +os: linux +dist: bionic +language: shell services: - docker -# Make some fake binaries to spoof an ACE install for the Dockerbuild files to use. -before_install: - - mkdir -p deps/ace-install/server/bin/ - - echo -e "#!/bin/bash\nexport PATH=/opt/ibm/ace-11/server/bin/" > deps/ace-install/server/bin/mqsiprofile && chmod ugo+x deps/ace-install/server/bin/mqsiprofile - - echo -e "#!/bin/bash\nexit 0" > deps/ace-install/server/bin/mqsicreateworkdir && chmod ugo+x deps/ace-install/server/bin/mqsicreateworkdir - - echo -e "#!/bin/bash\ngroupadd mqbrkrs\ngroupadd mqm\nexit 0" > deps/ace-install/ace && chmod u+x deps/ace-install/ace - - cd deps && tar czf ace-install.tar.gz ace-install && cd .. +env: + global: + - DOWNLOAD_URL=https://na.artifactory.swg-devops.com/artifactory/appconnect-iiboc/prereqs/builds/12.0.10.0/xLinux/ace-12.0.10.0.tar.gz install: - - docker build --build-arg ACE_INSTALL=ace-install.tar.gz --file ubi/Dockerfile.aceonly . \ No newline at end of file + - docker system info + - touch git.commit + - docker build --no-cache -t testbuild --build-arg DOWNLOAD_URL=$DOWNLOAD_URL --build-arg USERNAME=$ARTIFACTORY_USER --build-arg PASSWORD=$ARTIFACTORY_ACCESS_TOKEN -f ./Dockerfile . + - cd samples/bars + - docker build -t aceapp --build-arg FROMIMAGE=testbuild --file Dockerfile . + - cd ../mqclient + - docker build -t aceappmqclient --build-arg FROMIMAGE=aceapp --build-arg MQ_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.3.0.1-IBM-MQC-Redist-LinuxX64.tar.gz --file Dockerfile . + - docker run -d -p 7800:7800 --env LICENSE=accept --name aceapp aceappmqclient +script: + - ../bars/test.sh diff --git a/Dockerfile b/Dockerfile index 1f2f6da..68e96d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,17 @@ # Build and run: # # docker build -t ace:12.0.4.0 -f Dockerfile . -# docker run -e LICENSE=accept -p 7600:7600 -p 7800:7800 --rm -ti ace:12.0.4.0 +# docker run -e LICENSE=accept -p 7600:7600 -p 7800:7800 --rm -ti ace:12.0.2.0 # # Can also mount a volume for the work directory: # -# docker run -e LICENSE=accept -v /what/ever/dir:/home/aceuser/ace-server -p 7600:7600 -p 7800:7800 --rm -ti ace:12.0.4.0 +# docker run -e LICENSE=accept -v /what/ever/dir:/home/aceuser/ace-server -p 7600:7600 -p 7800:7800 --rm -ti ace:12.0.2.0 # # This might require a local directory with the right permissions, or changing the userid further down . . . -FROM registry.access.redhat.com/ubi8/ubi-minimal as builder +FROM registry.access.redhat.com/ubi9/ubi-minimal as builder -RUN microdnf update -y && microdnf install util-linux curl tar +RUN microdnf update -y && microdnf install -y util-linux tar && microdnf clean all ARG USERNAME ARG PASSWORD @@ -29,12 +29,10 @@ RUN mkdir -p /opt/ibm/ace-12 \ --strip-components 1 \ --directory /opt/ibm/ace-12 -FROM registry.access.redhat.com/ubi8/ubi-minimal - -RUN microdnf update -y && microdnf install findutils util-linux && microdnf clean all +FROM registry.access.redhat.com/ubi9/ubi-minimal # Force reinstall tzdata package to get zoneinfo files -RUN microdnf reinstall tzdata -y +RUN microdnf update -y && microdnf install -y findutils util-linux which tar && microdnf reinstall -y tzdata && microdnf clean all # Install ACE v12.0.4.0 and accept the license COPY --from=builder /opt/ibm/ace-12 /opt/ibm/ace-12 @@ -52,5 +50,8 @@ USER 1001 # Expose ports. 7600, 7800, 7843 for ACE; EXPOSE 7600 7800 7843 +# Set default Integration Server name +ENV ACE_SERVER_NAME ace-server + # Set entrypoint to run the server -ENTRYPOINT ["bash", "-c", ". /opt/ibm/ace-12/server/bin/mqsiprofile && IntegrationServer -w /home/aceuser/ace-server"] +ENTRYPOINT ["bash", "-c", ". /opt/ibm/ace-12/server/bin/mqsiprofile && IntegrationServer --name ${ACE_SERVER_NAME} -w /home/aceuser/ace-server"] diff --git a/README.md b/README.md index 5074b54..45284ac 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,9 @@ Use this link as the DOWNLOAD_URL build parameter, adjusting the version numbers To run the image use a command such as -`docker run -d -p 7600:7600 -p 7800:7800 -e LICENSE=accept ace:latest` +`docker run -d -p 7600:7600 -p 7800:7800 -e LICENSE=accept -e ACE_SERVER_NAME=myserver ace:latest` + +where `ACE_SERVER_NAME` is the name of the Integration Server that will be running. ### Extending the image diff --git a/asoc/appscan-config.xml b/asoc/appscan-config.xml new file mode 100644 index 0000000..ee25319 --- /dev/null +++ b/asoc/appscan-config.xml @@ -0,0 +1,8 @@ + + + + asoc/ + jenkins-build-scripts/ + + + diff --git a/experimental/README.md b/experimental/README.md index 83c38c3..cf081ef 100644 --- a/experimental/README.md +++ b/experimental/README.md @@ -2,33 +2,54 @@ Simple docker images for ACE v12 on Linux (amd64 and s390x) and Windows -ace-full contains a Dockerfile for building an image that can run the full product, including mqsicreatebar with a virtual X server. +Dockefiles in the following directories are used for various purposes: -ace-basic contains a Dockerfile for building an image that can run the product server, including all files except the toolkit. +- ace-full can run the full product, including mqsicreatebar with a virtual X server. +- ace-basic can run the product server, including all files except the toolkit. +- ace-minimal can run simple servers with a non-root user. +- ace-sample contains a sample BAR file and Dockerfiles for building runnable images to serve HTTP clients. +- devcontainers is used with GitHub Codespaces to allow container-based development with VisualStudio Code in a web browser. -ace-minimal contains the Dockerfiles for building images that can run simple servers with a non-root user. +See build-all.sh for details on building the images; setting LICENSE=accept is required for all but the initial image builds. -ace-sample contains a sample BAR file and Dockerfiles for building runnable images to serve HTTP clients. +## Setting the correct product URL -See build-all.sh for details on building the images; setting LICENSE=accept is required for all but the initial image builds. +The Dockerfiles in the various directories take a `DOWNLOAD_URL` parameter that may +need to be specified to build a specific version of the product. This is provided on +the command line using the `--build-arg` parameter, and for the demo repos that use +Tekton to build the image, the URL is the `aceDownloadUrl` value in ace-minimal-image-pipeline-run.yaml. + +This value may need updating, either to another version in the same server directory +(if available) or else to an ACE developer edition URL from the IBM website. In the latter +case, start at https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +and proceed through the pages until the main download page with a link: + +![download page](ace-dev-edition-download.png) + +The link is likely to be of the form +``` +https://iwm.dhe.ibm.com/sdfdl/v2/regs2/mbford/Xa.2/Xb.WJL1cUPI9gANEhP8GuPD_qX1rj6x5R4yTUM7s_C2ue8/Xc.12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz/Xd./Xf.LpR.D1vk/Xg.12164875/Xi.swg-wmbfd/XY.regsrvs/XZ.pPVETUejcqPsVfDVKbdNu6IRpo4TkyKu/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +``` +Copy that link into the aceDownloadUrl parameter or use it as the DOWNLOAD_URL build +parameter, adjusting the version numbers in the other files and parameters as needed. + +## Running the sample To run the sample after building: ``` -docker run -e LICENSE=accept --rm -ti ace-sample:12.0.4.0-minimal-alpine +docker run -e LICENSE=accept --rm -ti ace-sample:12.0.10.0-alpine ``` -and then curl http://[container IP]:7800/test should return '{"data":"a string from ACE"}' +and then `curl http://[container IP]:7800/test` should return '{"data":"a string from ACE"}' ## Various sizes -Local on Debian 10 machine with defaults in Dockerfiles: +Local on Ubuntu with defaults in Dockerfiles: ``` -ace-minimal 12.0.4.0-alpine-openjdk16 2d02c13096c9 24 minutes ago 496MB -ace-minimal 12.0.4.0-alpine-openjdk14 5c1d593ee96f 25 minutes ago 506MB -ace-minimal 12.0.4.0-alpine 6775ce85b5fd 27 minutes ago 604MB -ace-minimal 12.0.4.0-ubuntu a351cfebbd4d 26 minutes ago 684MB -ace-basic 12.0.4.0-ubuntu 319227027474 19 minutes ago 1.48GB -ace-full 12.0.4.0-ubuntu 73978ff4c598 20 minutes ago 3.02GB +ace-basic 12.0.10.0-ubuntu 69f66523df16 About a minute ago 1.78GB +ace-full 12.0.10.0-ubuntu 2b77ec0f9a71 2 minutes ago 4.15GB +ace-minimal 12.0.10.0-ubuntu 0b662240db80 13 minutes ago 738MB +ace-minimal 12.0.10.0-alpine c5d126442f73 15 minutes ago 644MB ``` -Most of these will fit into the IBM Cloud container registry free tier due to compression, but ace-full and ace-basic are too big for that. +Some of these will fit into the IBM Cloud container registry free tier due to compression, but ace-full and ace-basic are too big for that. diff --git a/experimental/ace-basic/Dockerfile.mqclient b/experimental/ace-basic/Dockerfile.mqclient new file mode 100644 index 0000000..91aa936 --- /dev/null +++ b/experimental/ace-basic/Dockerfile.mqclient @@ -0,0 +1,46 @@ +FROM ubuntu:22.04 + +MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) + +# Build: +# +# docker build -t ace-basic-mqclient:12.0.10.0 -f Dockerfile.mqclient . + +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +ARG MQ_DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.3.2.0-IBM-MQC-Redist-LinuxX64.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 + +# Prevent errors about having no terminal when using apt-get +ENV DEBIAN_FRONTEND noninteractive + +# Install ACE v12 and accept the license +RUN apt-get update && apt-get install -y aria2 curl && \ + mkdir /opt/ibm && echo Downloading package ${DOWNLOAD_URL} && \ + cd /tmp && \ + echo Downloading package ${DOWNLOAD_URL} && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude=tools --exclude server/bin/TADataCollector.sh --exclude server/nodejs_partial -exclude server/transformationAdvisor/ta-plugin-ace.jar --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12* /opt/ibm/ace-12 && \ + /opt/ibm/ace-12/ace make registry global accept license deferred + +# Create a user to run as, create the ace workdir, and chmod script files +RUN useradd --uid 1001 --create-home --home-dir /home/aceuser --shell /bin/bash -G mqbrkrs,sudo aceuser \ + && su - aceuser -c "export LICENSE=accept && . /opt/ibm/ace-12/server/bin/mqsiprofile && mqsicreateworkdir /home/aceuser/ace-server" + +# Install MQ client libraries +RUN mkdir /opt/mqm && curl ${MQ_DOWNLOAD_URL} | tar zx --exclude=tools --directory /opt/mqm + +# Install Maven for development use. +# +# The standard Maven packages on most distros bring a lot of extra packages with +# them so we install Maven directly. +RUN cd /opt && \ + curl -k https://archive.apache.org/dist/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz | tar -xzf - && \ + ln -s /opt/apache-maven-3.8.4/bin/mvn /usr/local/bin/mvn + +# aceuser +USER 1001 diff --git a/experimental/ace-basic/Dockerfile.ubuntu b/experimental/ace-basic/Dockerfile.ubuntu index e6060e6..5d7d4b4 100644 --- a/experimental/ace-basic/Dockerfile.ubuntu +++ b/experimental/ace-basic/Dockerfile.ubuntu @@ -1,31 +1,35 @@ -FROM ubuntu:20.04 -MAINTAINER Trevor Dolby (@tdolby) +FROM ubuntu:22.04 +MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) # Build and run: # -# docker build -t ace-basic:12.0.4.0-ubuntu -f Dockerfile . -# docker run -e LICENSE=accept -p 7600:7600 -p 7800:7800 --rm -ti ace-basic:12.0.4.0-ubuntu +# docker build -t ace-basic:12.0.10.0-ubuntu -f Dockerfile . +# docker run -e LICENSE=accept -p 7600:7600 -p 7800:7800 --rm -ti ace-basic:12.0.10.0-ubuntu # # Can also mount a volume for the work directory: # -# docker run -e LICENSE=accept -v /what/ever/dir:/home/aceuser/ace-server -p 7600:7600 -p 7800:7800 --rm -ti ace-basic:12.0.4.0-ubuntu +# docker run -e LICENSE=accept -v /what/ever/dir:/home/aceuser/ace-server -p 7600:7600 -p 7800:7800 --rm -ti ace-basic:12.0.10.0-ubuntu # # This might require a local directory with the right permissions, or changing the userid further down . . . -ARG USERNAME -ARG PASSWORD -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 # Prevent errors about having no terminal when using apt-get ENV DEBIAN_FRONTEND noninteractive -# Install ACE v12.0.4.0 and accept the license -RUN apt-get update && apt-get install -y --no-install-recommends curl && \ +# Install ACE v12 and accept the license +RUN apt-get update && apt-get install -y aria2 && \ mkdir /opt/ibm && echo Downloading package ${DOWNLOAD_URL} && \ - if [ -z $USERNAME ]; then curl ${DOWNLOAD_URL}; else curl -u ${USERNAME}:{PASSWORD} ${DOWNLOAD_URL}; fi | \ - tar zx --exclude=tools --exclude server/bin/TADataCollector.sh --exclude server/transformationAdvisor/ta-plugin-ace.jar --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + cd /tmp && \ + echo Downloading package ${DOWNLOAD_URL} && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude=tools --exclude server/bin/TADataCollector.sh --exclude server/nodejs_partial --exclude server/transformationAdvisor/ta-plugin-ace.jar --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12* /opt/ibm/ace-12 && \ /opt/ibm/ace-12/ace make registry global accept license deferred # Create a user to run as, create the ace workdir, and chmod script files diff --git a/experimental/ace-dev-edition-download.png b/experimental/ace-dev-edition-download.png new file mode 100755 index 0000000000000000000000000000000000000000..14bed971d443aa36cd40c35eaa438dd506f7a6cc GIT binary patch literal 9964 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 Xm%6tkiIaz+g8+s1sxoC#CSU#wt|P0_ literal 0 HcmV?d00001 diff --git a/experimental/ace-full/Dockerfile.ubuntu b/experimental/ace-full/Dockerfile.ubuntu index 057814a..7352848 100644 --- a/experimental/ace-full/Dockerfile.ubuntu +++ b/experimental/ace-full/Dockerfile.ubuntu @@ -1,19 +1,27 @@ -FROM ubuntu:20.04 -MAINTAINER Trevor Dolby (@tdolby) +FROM ubuntu:22.04 +MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) -# docker build -t ace-full:12.0.4.0-ubuntu -f Dockerfile.ubuntu . +# docker build -t ace-full:12.0.10.0-ubuntu -f Dockerfile.ubuntu . -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 + +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 # Prevent errors about having no terminal when using apt-get ENV DEBIAN_FRONTEND noninteractive -# Install ACE v12.0.4.0 and accept the license -RUN apt-get update && apt-get install -y --no-install-recommends curl && \ +# Install ACE v12 and accept the license +RUN apt-get update && apt-get install -y aria2 && \ mkdir /opt/ibm && echo Downloading package ${DOWNLOAD_URL} && \ - curl ${DOWNLOAD_URL} | tar zx --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + cd /tmp && \ + echo Downloading package ${DOWNLOAD_URL} && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12* /opt/ibm/ace-12 && \ /opt/ibm/ace-12/ace make registry global accept license deferred # Configure the system diff --git a/experimental/ace-full/README.md b/experimental/ace-full/README.md index 7eb14fe..f72d7a1 100644 --- a/experimental/ace-full/README.md +++ b/experimental/ace-full/README.md @@ -11,6 +11,11 @@ in this directory. Containers must be started with the LICENSE environment variable set to "accept" for the product to be usable (for example, "-e LICENSE=accept" on a docker run command). +See the [ace-non-application-flows](https://github.com/trevor-dolby-at-ibm-com/ace-non-application-flows) +demo repo for an example using this image to build non-application (top-level) resources. +The `ibmint` command is not intended to be used to build such resources, and so mqsicreatebar +(which requires a full image) is needed for the GitHub Action in that repo. + ## Build image with mqsicreatebar This container can be used as a base image for other build containers, or could be run with a diff --git a/experimental/ace-minimal/Dockerfile.alpine b/experimental/ace-minimal/Dockerfile.alpine index 0e9ba57..a846bf1 100644 --- a/experimental/ace-minimal/Dockerfile.alpine +++ b/experimental/ace-minimal/Dockerfile.alpine @@ -1,33 +1,38 @@ -FROM alpine:3.15 +FROM alpine:3.18 -# docker build -t ace-minimal:12.0.4.0-alpine -f Dockerfile.alpine . +# docker build -t ace-minimal:12.0.10.0-alpine -f Dockerfile.alpine . -MAINTAINER Trevor Dolby (@tdolby) +MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 RUN apk --update add --no-cache --virtual .build-deps curl binutils zstd \ - && GLIBC_VER="2.31-r0" \ + && set -x \ + && GLIBC_VER="2.34-r0" \ && ALPINE_GLIBC_REPO="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \ && GCC_LIBS_URL="https://archive.archlinux.org/packages/g/gcc-libs/gcc-libs-10.1.0-2-x86_64.pkg.tar.zst" \ && GCC_LIBS_SHA256=f80320a03ff73e82271064e4f684cd58d7dbdb07aa06a2c4eea8e0f3c507c45c \ - && ZLIB_URL="https://archive.archlinux.org/packages/z/zlib/zlib-1%3A1.2.11-4-x86_64.pkg.tar.xz" \ - && ZLIB_SHA256=43a17987d348e0b395cb6e28d2ece65fb3b5a0fe433714762780d18c0451c149 \ - && curl -Ls https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \ - && curl -Ls ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-${GLIBC_VER}.apk > /tmp/${GLIBC_VER}.apk \ - && apk add /tmp/${GLIBC_VER}.apk \ - && curl -Ls ${GCC_LIBS_URL} -o /tmp/gcc-libs.tar.zst \ + && ZLIB_URL="https://archive.archlinux.org/packages/z/zlib/zlib-1%3A1.2.13-2-x86_64.pkg.tar.zst" \ + && ZLIB_SHA256=c4f394724b20b84d7304b23bbb58442b6ef53e5cbac89eb51e39d7f0a46abafd \ + && curl -Lks https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \ + && curl -Lks ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-${GLIBC_VER}.apk > /tmp/${GLIBC_VER}.apk \ + && apk add --force-overwrite /tmp/${GLIBC_VER}.apk \ + && curl -Lks ${GCC_LIBS_URL} -o /tmp/gcc-libs.tar.zst \ && echo "${GCC_LIBS_SHA256} /tmp/gcc-libs.tar.zst" | sha256sum -c - \ && mkdir /tmp/gcc \ && zstd -d /tmp/gcc-libs.tar.zst \ && tar -xf /tmp/gcc-libs.tar -C /tmp/gcc \ && mv /tmp/gcc/usr/lib/libgcc* /tmp/gcc/usr/lib/libstdc++* /usr/glibc-compat/lib \ && strip /usr/glibc-compat/lib/libgcc_s.so.* /usr/glibc-compat/lib/libstdc++.so* \ - && curl -Ls ${ZLIB_URL} -o /tmp/libz.tar.xz \ - && echo "${ZLIB_SHA256} /tmp/libz.tar.xz" | sha256sum -c - \ + && curl -Lks ${ZLIB_URL} -o /tmp/libz.tar.zst \ + && echo "${ZLIB_SHA256} /tmp/libz.tar.zst" | sha256sum -c - \ && mkdir /tmp/libz \ - && tar -xf /tmp/libz.tar.xz -C /tmp/libz \ + && zstd -d /tmp/libz.tar.zst \ + && tar -xf /tmp/libz.tar -C /tmp/libz \ && mv /tmp/libz/usr/lib/libz.so* /usr/glibc-compat/lib \ && apk del --purge .build-deps \ && rm -rf /tmp/${GLIBC_VER}.apk /tmp/gcc /tmp/gcc-libs.tar* /tmp/libz /tmp/libz.tar* /var/cache/apk/* \ @@ -53,12 +58,16 @@ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ cat /tmp/excludes-ims.txt >> /tmp/all-excludes.txt && \ # JDK provided by the product # cat /tmp/excludes-jdk.txt >> /tmp/all-excludes.txt && \ +# Java11 is not required + cat /tmp/excludes-java11.txt >> /tmp/all-excludes.txt && \ # node.js support is optional; use --no-nodejs on server start line cat /tmp/excludes-nodejs.txt >> /tmp/all-excludes.txt && \ # NPM install support is optional cat /tmp/excludes-npm.txt >> /tmp/all-excludes.txt && \ # ODBC drivers are optional cat /tmp/excludes-odbc.txt >> /tmp/all-excludes.txt && \ +# Telemetry is optional + cat /tmp/excludes-telemetry.txt >> /tmp/all-excludes.txt && \ # Toolkit is optional cat /tmp/excludes-tools.txt >> /tmp/all-excludes.txt && \ # Web UI support optional; use --admin-rest-api -1 on server start line @@ -68,17 +77,19 @@ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ # XSLT nodes are optional cat /tmp/excludes-xmlt.txt >> /tmp/all-excludes.txt -# Set the env vars mentioned above +# Set the environment correctly COPY profile-with-product-java-paths.sh /etc/profile.d/profile-with-product-java-paths.sh COPY product-java-paths.sh /etc/profile.d/product-java-paths.sh # Install ACE RUN mkdir -p /opt/ibm && \ - apk add mksh bash curl binutils zip && \ + apk add mksh bash aria2 binutils zip && \ + cd /tmp && \ echo Downloading package ${DOWNLOAD_URL} && \ - curl ${DOWNLOAD_URL} \ - | tar zx --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12* /opt/ibm/ace-12 && \ find /opt/ibm -name "*.so*" -exec strip {} ";" && \ find /opt/ibm -name "*.wrk" -exec strip {} ";" && \ find /opt/ibm -name "*.lil" -exec strip {} ";" && \ @@ -105,6 +116,9 @@ RUN ( echo "Passw0rd" ; echo "Passw0rd" ) | adduser -u 1001 -h /home/aceuser -s su - aceuser -c "export LICENSE=accept && . /etc/profile.d/profile-with-product-java-paths.sh && /opt/ibm/ace-12/server/bin/mqsicreateworkdir /home/aceuser/ace-server" && \ echo ". /etc/profile.d/profile-with-product-java-paths.sh" >> /home/aceuser/.bashrc +# Switch off the components that aren't in the image +COPY minimal-image.components.yaml /opt/ibm/ace-12/image.components.yaml + # aceuser USER 1001 diff --git a/experimental/ace-minimal/Dockerfile.alpine-java11 b/experimental/ace-minimal/Dockerfile.alpine-java11 new file mode 100644 index 0000000..245b27e --- /dev/null +++ b/experimental/ace-minimal/Dockerfile.alpine-java11 @@ -0,0 +1,129 @@ +FROM alpine:3.18 + +# docker build -t ace-minimal:12.0.10.0-alpine-java11 -f Dockerfile.alpine-java11 . + +MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) + +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 + +RUN apk --update add --no-cache --virtual .build-deps curl binutils zstd \ + && set -x \ + && GLIBC_VER="2.34-r0" \ + && ALPINE_GLIBC_REPO="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \ + && GCC_LIBS_URL="https://archive.archlinux.org/packages/g/gcc-libs/gcc-libs-10.1.0-2-x86_64.pkg.tar.zst" \ + && GCC_LIBS_SHA256=f80320a03ff73e82271064e4f684cd58d7dbdb07aa06a2c4eea8e0f3c507c45c \ + && ZLIB_URL="https://archive.archlinux.org/packages/z/zlib/zlib-1%3A1.2.13-2-x86_64.pkg.tar.zst" \ + && ZLIB_SHA256=c4f394724b20b84d7304b23bbb58442b6ef53e5cbac89eb51e39d7f0a46abafd \ + && curl -Lks https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \ + && curl -Lks ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-${GLIBC_VER}.apk > /tmp/${GLIBC_VER}.apk \ + && apk add --force-overwrite /tmp/${GLIBC_VER}.apk \ + && curl -Lks ${GCC_LIBS_URL} -o /tmp/gcc-libs.tar.zst \ + && echo "${GCC_LIBS_SHA256} /tmp/gcc-libs.tar.zst" | sha256sum -c - \ + && mkdir /tmp/gcc \ + && zstd -d /tmp/gcc-libs.tar.zst \ + && tar -xf /tmp/gcc-libs.tar -C /tmp/gcc \ + && mv /tmp/gcc/usr/lib/libgcc* /tmp/gcc/usr/lib/libstdc++* /usr/glibc-compat/lib \ + && strip /usr/glibc-compat/lib/libgcc_s.so.* /usr/glibc-compat/lib/libstdc++.so* \ + && curl -Lks ${ZLIB_URL} -o /tmp/libz.tar.zst \ + && echo "${ZLIB_SHA256} /tmp/libz.tar.zst" | sha256sum -c - \ + && mkdir /tmp/libz \ + && zstd -d /tmp/libz.tar.zst \ + && tar -xf /tmp/libz.tar -C /tmp/libz \ + && mv /tmp/libz/usr/lib/libz.so* /usr/glibc-compat/lib \ + && apk del --purge .build-deps \ + && rm -rf /tmp/${GLIBC_VER}.apk /tmp/gcc /tmp/gcc-libs.tar* /tmp/libz /tmp/libz.tar* /var/cache/apk/* \ + && mkdir /usr/glibc-compat/zlib-only \ + && ( cd /usr/glibc-compat/lib && tar -cf - libz* ) | ( cd /usr/glibc-compat/zlib-only && tar -xf - ) \ + && apk add 'apk-tools>2.12.5-r1' + +ENV TZ=Europe/London + +# Set up exclusions +COPY excludes*txt /tmp/ + +RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ +# Adapters are optional + cat /tmp/excludes-adapters.txt >> /tmp/all-excludes.txt && \ +# CICS is optional + cat /tmp/excludes-cics.txt >> /tmp/all-excludes.txt && \ +# FTE is optional + cat /tmp/excludes-fte.txt >> /tmp/all-excludes.txt && \ +# GlobalCache is optional; set MQSI_NO_CACHE_SUPPORT=1 + cat /tmp/excludes-globalcache.txt >> /tmp/all-excludes.txt && \ +# IMS is optional + cat /tmp/excludes-ims.txt >> /tmp/all-excludes.txt && \ +# Use Java11 instead of default Java8 + cat /tmp/excludes-jdk.txt >> /tmp/all-excludes.txt && \ +# Java11 is provided by the product +# cat /tmp/excludes-java11.txt >> /tmp/all-excludes.txt && \ +# node.js support is optional; use --no-nodejs on server start line + cat /tmp/excludes-nodejs.txt >> /tmp/all-excludes.txt && \ +# NPM install support is optional + cat /tmp/excludes-npm.txt >> /tmp/all-excludes.txt && \ +# ODBC drivers are optional + cat /tmp/excludes-odbc.txt >> /tmp/all-excludes.txt && \ +# Telemetry is optional + cat /tmp/excludes-telemetry.txt >> /tmp/all-excludes.txt && \ +# Toolkit is optional + cat /tmp/excludes-tools.txt >> /tmp/all-excludes.txt && \ +# Web UI support optional; use --admin-rest-api -1 on server start line + cat /tmp/excludes-webui.txt >> /tmp/all-excludes.txt && \ +# WSRR nodes are optional + cat /tmp/excludes-wsrr.txt >> /tmp/all-excludes.txt && \ +# XSLT nodes are optional + cat /tmp/excludes-xmlt.txt >> /tmp/all-excludes.txt + +# Set the environment correctly +COPY profile-with-product-java11-paths.sh /etc/profile.d/profile-with-product-java11-paths.sh +COPY product-java11-paths.sh /etc/profile.d/product-java11-paths.sh + +# Install ACE +RUN mkdir -p /opt/ibm && \ + apk add mksh bash aria2 binutils zip && \ + cd /tmp && \ + echo Downloading package ${DOWNLOAD_URL} && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12* /opt/ibm/ace-12 && \ + find /opt/ibm -name "*.so*" -exec strip {} ";" && \ + find /opt/ibm -name "*.wrk" -exec strip {} ";" && \ + find /opt/ibm -name "*.lil" -exec strip {} ";" && \ + ( strip /opt/ibm/ace-12/server/bin/* 2>/dev/null || /bin/true ) && \ + zip -d /opt/ibm/ace-12/common/classes/IntegrationAPI.jar BIPmsgs_de.properties BIPmsgs_es.properties BIPmsgs_fr.properties BIPmsgs_it.properties BIPmsgs_ja.properties BIPmsgs_ko.properties BIPmsgs_pl.properties BIPmsgs_pt_BR.properties BIPmsgs_ru.properties BIPmsgs_tr.properties BIPmsgs_zh.properties BIPmsgs_zh_HK.properties BIPmsgs_zh_TW.properties && \ + apk del --purge binutils zip && \ + addgroup mqbrkrs && \ + rm -rf /opt/ibm/ace-12/common/java11/jmods && \ + cat /etc/profile.d/product-java11-paths.sh >> /root/.bashrc && \ + ln -s /opt/ibm/ace-12/common/java11 /opt/ibm/ace-12/common/jdk && \ + ln -s . /opt/ibm/ace-12/common/java11/jre + +# Issues with 5.1.4(1)-release (x86_64-alpine-linux-musl) on alpine +RUN sed -i 's/\/bin\/bash/\/bin\/mksh/g' /opt/ibm/ace-12/ace /opt/ibm/ace-12/server/bin/mqsicreateworkdir /opt/ibm/ace-12/server/bin/mqsipackagebar + +RUN bash -c '. /etc/profile.d/product-java11-paths.sh && /opt/ibm/ace-12/ace make registry global accept license deferred' + +# Set BASH_ENV to source mqsiprofile when using docker exec bash -c +ENV BASH_ENV=/etc/profile.d/profile-with-product-java11-paths.sh + +# Create a user to run as, create the ace workdir, and chmod script files +RUN ( echo "Passw0rd" ; echo "Passw0rd" ) | adduser -u 1001 -h /home/aceuser -s /bin/bash aceuser mqbrkrs && \ + adduser aceuser mqbrkrs && \ + cat /etc/profile.d/product-java11-paths.sh >> /home/aceuser/.bashrc && \ + chown aceuser /home/aceuser/.bashrc && \ + chmod 664 /home/aceuser/.bashrc && \ + su - aceuser -c "export LICENSE=accept && . /etc/profile.d/profile-with-product-java11-paths.sh && /opt/ibm/ace-12/server/bin/mqsicreateworkdir /home/aceuser/ace-server" && \ + echo ". /etc/profile.d/profile-with-product-java11-paths.sh" >> /home/aceuser/.bashrc + +# Switch off the components that aren't in the image +COPY minimal-image.components.yaml /opt/ibm/ace-12/image.components.yaml + +# aceuser +USER 1001 + +# Leaving this blank to avoid issues with openshift +#ENTRYPOINT ["bash"] diff --git a/experimental/ace-minimal/Dockerfile.ubuntu b/experimental/ace-minimal/Dockerfile.ubuntu index 28e63ad..88ed548 100644 --- a/experimental/ace-minimal/Dockerfile.ubuntu +++ b/experimental/ace-minimal/Dockerfile.ubuntu @@ -1,11 +1,14 @@ -FROM ubuntu:20.04 +FROM ubuntu:22.04 -# docker build -t ace-minimal:12.0.4.0-ubuntu -f Dockerfile.ubuntu . +# docker build -t ace-minimal:12.0.10.0-ubuntu -f Dockerfile.ubuntu . -MAINTAINER Trevor Dolby (@tdolby) +MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 # Prevent errors about having no terminal when using apt-get ENV DEBIAN_FRONTEND noninteractive @@ -24,12 +27,16 @@ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ cat /tmp/excludes-globalcache.txt >> /tmp/all-excludes.txt && \ # IMS is optional cat /tmp/excludes-ims.txt >> /tmp/all-excludes.txt && \ +# Java11 is not required + cat /tmp/excludes-java11.txt >> /tmp/all-excludes.txt && \ # node.js support is optional; use --no-nodejs on server start line cat /tmp/excludes-nodejs.txt >> /tmp/all-excludes.txt && \ # NPM install support is optional cat /tmp/excludes-npm.txt >> /tmp/all-excludes.txt && \ # ODBC drivers are optional cat /tmp/excludes-odbc.txt >> /tmp/all-excludes.txt && \ +# Telemetry is optional + cat /tmp/excludes-telemetry.txt >> /tmp/all-excludes.txt && \ # Toolkit is optional cat /tmp/excludes-tools.txt >> /tmp/all-excludes.txt && \ # Web UI support optional; use --admin-rest-api -1 on server start line @@ -40,12 +47,14 @@ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ cat /tmp/excludes-xmlt.txt >> /tmp/all-excludes.txt # Install ACE and accept the license -RUN apt-get update && apt-get install -y --no-install-recommends curl zip binutils && \ +RUN apt-get update && apt-get install -y aria2 zip binutils && \ mkdir /opt/ibm && \ + cd /tmp && \ echo Downloading package ${DOWNLOAD_URL} && \ - curl ${DOWNLOAD_URL} \ - | tar zx --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12* /opt/ibm/ace-12 && \ find /opt/ibm -name "*.so*" -exec strip {} ";" && \ find /opt/ibm -name "*.wrk" -exec strip {} ";" && \ find /opt/ibm -name "*.lil" -exec strip {} ";" && \ @@ -80,6 +89,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && apt-get -y dist-upgrade \ && rm -rf /var/lib/apt/lists/* +# Switch off the components that aren't in the image +COPY minimal-image.components.yaml /opt/ibm/ace-12/image.components.yaml + # aceuser USER 1001 diff --git a/experimental/ace-minimal/README.md b/experimental/ace-minimal/README.md new file mode 100644 index 0000000..b169844 --- /dev/null +++ b/experimental/ace-minimal/README.md @@ -0,0 +1,27 @@ +# ace-minimal docker image + +This directory contains files that allow small ACE container images to be +built for use in pipelines and cloud container runtimes. + +Main Dockerfiles: + +- Dockerfile.alpine builds the smallest image, using Alpine as a base with glibc added +- Dockerfile.ubuntu builds a slightly larger image + +## Building + +See the [README](../README.md) in the parent directory for download URL update +information (if needed) and then run one of the commands +``` +export DOWNLOAD_URL= +docker build --build-arg DOWNLOAD_URL -t ace-minimal:12.0.10.0-alpine -f Dockerfile.alpine . +``` +or +``` +export DOWNLOAD_URL= +docker build --build-arg DOWNLOAD_URL -t ace-minimal:12.0.10.0-ubuntu -f Dockerfile.ubuntu . +``` + +These images can then be used to build other images with build tools, deployed +ACE applications, etc. + diff --git a/experimental/ace-minimal/excludes-java11.txt b/experimental/ace-minimal/excludes-java11.txt new file mode 100644 index 0000000..54757ff --- /dev/null +++ b/experimental/ace-minimal/excludes-java11.txt @@ -0,0 +1 @@ +*/common/java11 diff --git a/experimental/ace-minimal/excludes-telemetry.txt b/experimental/ace-minimal/excludes-telemetry.txt new file mode 100644 index 0000000..c8ff4f2 --- /dev/null +++ b/experimental/ace-minimal/excludes-telemetry.txt @@ -0,0 +1,2 @@ +*/server/lib/libimbtelemetry.so +*/server/lil/imbopentelemetry.lil diff --git a/experimental/ace-minimal/minimal-image.components.yaml b/experimental/ace-minimal/minimal-image.components.yaml new file mode 100644 index 0000000..0c050c6 --- /dev/null +++ b/experimental/ace-minimal/minimal-image.components.yaml @@ -0,0 +1,37 @@ +--- +# ACE Integration Server components file +# +# Created at 12.0.7.0 - 42cd3bab4d5746527981157e644b9cab-a00f286a885cfbb65a3fae1ad292e418 +# +# General notes : +# - Integration Server will load server.components.yaml from directory set via --work-dir +# - To ensure valid YAML avoid any use of TAB characters + +serverComponentsVersion: 1 +# reportExcludedComponents: true # Controls whether messages are written on integration server start-up indicating components are excluded. Default is true. + +# Main embedded run-times +NodeJS: false # Do not create NodeJS run-time within the Integration Server + +Nodes: + .NET: false # Controls whether the .NET nodes are loaded. + +JavaNodes: # If JVM is set to false then the JavaNodes section will not apply + Adapters: false # Controls whether the SAP, Oracle JD Edwards, Oracle Peoplesoft and Oracle Siebel nodes are loaded. + CICS: false # Controls whether the CICSRequest node is loaded. + IMS: false # Controls whether the IMSRequest node is loaded. + ODM: false # Controls whether the ODMRules node is loaded. + XSLT: false # Controls whether the XSLTransform nodes are loaded. + WSRR: false # Controls whether the WSRR EndpointLookup and RegistryLookup nodes are loaded (if this component is installed). + +JavaScriptNodes: # If NodeJS is set to false then the JavaScriptNodes section will not apply + Salesforce: false # Controls if the Salesforce connector is loaded. + LoopBack: false # Controls if the LoopBack connector is loaded. + +ResourceManagers: + GlobalCache: false # Controls whether the GlobalCache resources are loaded. + +FlowSecurityProviders: + LDAP: false # Controls whether the LDAP Security provider is loaded for message flow security. + TFIM: false # Controls whether the TFIM Security provider is loaded for message flow security. + WS-Trust: false # Controls whether the WS-Trust v1.3 STS Security provider is loaded for message flow security. diff --git a/experimental/ace-minimal/Dockerfile-no-ace.alpine-openjdk14 b/experimental/ace-minimal/old/Dockerfile-no-ace.alpine-openjdk14 similarity index 100% rename from experimental/ace-minimal/Dockerfile-no-ace.alpine-openjdk14 rename to experimental/ace-minimal/old/Dockerfile-no-ace.alpine-openjdk14 diff --git a/experimental/ace-minimal/Dockerfile.alpine-ibmjre b/experimental/ace-minimal/old/Dockerfile.alpine-ibmjre similarity index 100% rename from experimental/ace-minimal/Dockerfile.alpine-ibmjre rename to experimental/ace-minimal/old/Dockerfile.alpine-ibmjre diff --git a/experimental/ace-minimal/Dockerfile.alpine-openjdk14 b/experimental/ace-minimal/old/Dockerfile.alpine-openjdk14 similarity index 100% rename from experimental/ace-minimal/Dockerfile.alpine-openjdk14 rename to experimental/ace-minimal/old/Dockerfile.alpine-openjdk14 diff --git a/experimental/ace-minimal/Dockerfile.alpine-openjdk16 b/experimental/ace-minimal/old/Dockerfile.alpine-openjdk16 similarity index 100% rename from experimental/ace-minimal/Dockerfile.alpine-openjdk16 rename to experimental/ace-minimal/old/Dockerfile.alpine-openjdk16 diff --git a/experimental/ace-minimal/ibmjava-paths.sh b/experimental/ace-minimal/old/ibmjava-paths.sh similarity index 100% rename from experimental/ace-minimal/ibmjava-paths.sh rename to experimental/ace-minimal/old/ibmjava-paths.sh diff --git a/experimental/ace-minimal/openjdk14-paths.sh b/experimental/ace-minimal/old/openjdk14-paths.sh similarity index 100% rename from experimental/ace-minimal/openjdk14-paths.sh rename to experimental/ace-minimal/old/openjdk14-paths.sh diff --git a/experimental/ace-minimal/openjdk16-paths.sh b/experimental/ace-minimal/old/openjdk16-paths.sh similarity index 100% rename from experimental/ace-minimal/openjdk16-paths.sh rename to experimental/ace-minimal/old/openjdk16-paths.sh diff --git a/experimental/ace-minimal/profile-with-ibmjava-paths.sh b/experimental/ace-minimal/old/profile-with-ibmjava-paths.sh similarity index 100% rename from experimental/ace-minimal/profile-with-ibmjava-paths.sh rename to experimental/ace-minimal/old/profile-with-ibmjava-paths.sh diff --git a/experimental/ace-minimal/profile-with-openjdk14-paths.sh b/experimental/ace-minimal/old/profile-with-openjdk14-paths.sh similarity index 100% rename from experimental/ace-minimal/profile-with-openjdk14-paths.sh rename to experimental/ace-minimal/old/profile-with-openjdk14-paths.sh diff --git a/experimental/ace-minimal/profile-with-openjdk16-paths.sh b/experimental/ace-minimal/old/profile-with-openjdk16-paths.sh similarity index 100% rename from experimental/ace-minimal/profile-with-openjdk16-paths.sh rename to experimental/ace-minimal/old/profile-with-openjdk16-paths.sh diff --git a/experimental/ace-minimal/product-java11-paths.sh b/experimental/ace-minimal/product-java11-paths.sh new file mode 100755 index 0000000..8b13565 --- /dev/null +++ b/experimental/ace-minimal/product-java11-paths.sh @@ -0,0 +1,21 @@ +export MQSI_SIGNAL_EXCLUSIONS=11 +export MQSI_NO_CACHE_SUPPORT=1 + +# Don't use JSSE2 +export MQSI_JAVA_AVOID_SSL_SETTINGS=1 +# May also need to change JDBC policy settings to avoid hitting +# "Unsupported protocolSSL_TLSv2" errors from DB2 as described in +# https://www.ibm.com/mysupport/s/defect/aCI3p000000XlXvGAK/dt179015 +# +# sslConnection=true;sslVersion=TLSv1.3 + +# Needed to avoid errors in ibmint +export _JAVA_OPTIONS="-Dmqsipackagebar.noExtendClasspath=1" +# Needed for javax.xml packages +export MQSI_EXTRA_JAR_DIRECTORY=/opt/ibm/ace-12/common/jakarta/lib + +# Make sure Maven and others can find javac +export PATH=/opt/ibm/ace-12/common/java11/bin:$PATH + +# Not really java-related, but still needed +export LD_LIBRARY_PATH=/usr/glibc-compat/zlib-only:$LD_LIBRARY_PATH diff --git a/experimental/ace-minimal/profile-with-product-java11-paths.sh b/experimental/ace-minimal/profile-with-product-java11-paths.sh new file mode 100755 index 0000000..cda3a22 --- /dev/null +++ b/experimental/ace-minimal/profile-with-product-java11-paths.sh @@ -0,0 +1,24 @@ +# Combined file for easier scripting +export MQSI_SIGNAL_EXCLUSIONS=11 +export MQSI_NO_CACHE_SUPPORT=1 + +# Don't use JSSE2 +export MQSI_JAVA_AVOID_SSL_SETTINGS=1 +# May also need to change JDBC policy settings to avoid hitting +# "Unsupported protocolSSL_TLSv2" errors from DB2 as described in +# https://www.ibm.com/mysupport/s/defect/aCI3p000000XlXvGAK/dt179015 +# +# sslConnection=true;sslVersion=TLSv1.3 + +# Needed to avoid errors in ibmint +export _JAVA_OPTIONS="-Dmqsipackagebar.noExtendClasspath=1" +# Needed for javax.xml packages +export MQSI_EXTRA_JAR_DIRECTORY=/opt/ibm/ace-12/common/jakarta/lib + +. /opt/ibm/ace-12/server/bin/mqsiprofile + +# Make sure Maven and others can find javac +export PATH=/opt/ibm/ace-12/common/java11/bin:$PATH + +# Not really java-related, but still needed +export LD_LIBRARY_PATH=/usr/glibc-compat/zlib-only:$LD_LIBRARY_PATH diff --git a/experimental/build-all.sh b/experimental/build-all.sh index a08c837..7d16eef 100755 --- a/experimental/build-all.sh +++ b/experimental/build-all.sh @@ -1,27 +1,36 @@ #!/bin/bash -export PRODUCT_VERSION=12.0.4.0 -export PRODUCT_LABEL=ace-${PRODUCT_VERSION} -export DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz + +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +export DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +export PRODUCT_VERSION=12.0.10.0 + +export DOWNLOAD_CONNECTION_COUNT=10 + # Exit on error set -e cd ace-minimal -docker build --build-arg DOWNLOAD_URL --build-arg PRODUCT_LABEL -t ace-minimal:${PRODUCT_VERSION}-alpine -f Dockerfile.alpine . -docker build --build-arg DOWNLOAD_URL --build-arg PRODUCT_LABEL -t ace-minimal:${PRODUCT_VERSION}-ubuntu -f Dockerfile.ubuntu . -# Highly experimental! -docker build --build-arg DOWNLOAD_URL --build-arg PRODUCT_LABEL -t ace-minimal:${PRODUCT_VERSION}-alpine-openjdk14 -f Dockerfile.alpine-openjdk14 . -docker build --build-arg DOWNLOAD_URL --build-arg PRODUCT_LABEL -t ace-minimal:${PRODUCT_VERSION}-alpine-openjdk16 -f Dockerfile.alpine-openjdk16 . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-minimal:${PRODUCT_VERSION}-alpine -f Dockerfile.alpine . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-minimal:${PRODUCT_VERSION}-alpine-java11 -f Dockerfile.alpine-java11 . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-minimal:${PRODUCT_VERSION}-ubuntu -f Dockerfile.ubuntu . cd ../ace-full -docker build --build-arg DOWNLOAD_URL --build-arg PRODUCT_LABEL -t ace-full:${PRODUCT_VERSION}-ubuntu -f Dockerfile.ubuntu . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-full:${PRODUCT_VERSION}-ubuntu -f Dockerfile.ubuntu . cd ../ace-basic -docker build --build-arg DOWNLOAD_URL --build-arg PRODUCT_LABEL -t ace-basic:${PRODUCT_VERSION}-ubuntu -f Dockerfile.ubuntu . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-basic:${PRODUCT_VERSION}-ubuntu -f Dockerfile.ubuntu . + +cd ../devcontainers +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-devcontainer:${PRODUCT_VERSION} -f Dockerfile . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-minimal-devcontainer:${PRODUCT_VERSION} -f Dockerfile.ace-minimal . +docker build --build-arg DOWNLOAD_URL --build-arg DOWNLOAD_CONNECTION_COUNT -t ace-devcontainer-mqclient:${PRODUCT_VERSION} -f Dockerfile.mqclient . cd ../sample # Normally only one of these would be built, and would be tagged with an application version docker build --build-arg LICENSE=accept --build-arg BASE_IMAGE=ace-minimal:${PRODUCT_VERSION}-alpine -t ace-sample:${PRODUCT_VERSION}-alpine -f Dockerfile . -docker build --build-arg LICENSE=accept --build-arg BASE_IMAGE=ace-minimal:${PRODUCT_VERSION}-alpine-openjdk16 -t ace-sample:${PRODUCT_VERSION}-alpine-openjdk16 -f Dockerfile . +docker build --build-arg LICENSE=accept --build-arg BASE_IMAGE=ace-minimal:${PRODUCT_VERSION}-alpine-java11 -t ace-sample:${PRODUCT_VERSION}-alpine-java11 -f Dockerfile . docker build --build-arg LICENSE=accept --build-arg BASE_IMAGE=ace-minimal:${PRODUCT_VERSION}-ubuntu -t ace-sample:${PRODUCT_VERSION}-ubuntu -f Dockerfile . docker build --build-arg LICENSE=accept --build-arg BASE_IMAGE=ace-full:${PRODUCT_VERSION}-ubuntu -t ace-sample:${PRODUCT_VERSION}-full-ubuntu -f Dockerfile . + diff --git a/experimental/devcontainers/Dockerfile b/experimental/devcontainers/Dockerfile index f9b8393..c65e29d 100644 --- a/experimental/devcontainers/Dockerfile +++ b/experimental/devcontainers/Dockerfile @@ -4,12 +4,13 @@ MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) # Build: # -# docker build -t ace-devcontainer:12.0.4.0 -f Dockerfile . +# docker build -t ace-devcontainer:12.0.10.0 -f Dockerfile . -ARG USERNAME -ARG PASSWORD -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 # Prevent errors about having no terminal when using apt-get ENV DEBIAN_FRONTEND noninteractive @@ -18,18 +19,24 @@ ENV DEBIAN_FRONTEND noninteractive COPY excludes*txt /tmp/ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ +# Java11 is not required + cat /tmp/excludes-java11.txt >> /tmp/all-excludes.txt && \ +# ToolkitDiscovery connectors are optional + cat /tmp/excludes-nodejs-all.txt >> /tmp/all-excludes.txt && \ # Toolkit is optional cat /tmp/excludes-tools.txt >> /tmp/all-excludes.txt && \ # WSRR nodes are optional cat /tmp/excludes-wsrr.txt >> /tmp/all-excludes.txt # Install ACE and accept the license -RUN apt-get update && apt-get install -y --no-install-recommends curl zip binutils && \ +RUN apt-get update && apt-get install -y aria2 zip binutils && \ mkdir /opt/ibm && \ + cd /tmp && \ echo Downloading package ${DOWNLOAD_URL} && \ - curl ${DOWNLOAD_URL} \ - | tar zx --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12.* /opt/ibm/ace-12 && \ find /opt/ibm -name "*.so*" -exec strip {} ";" && \ find /opt/ibm -name "*.wrk" -exec strip {} ";" && \ find /opt/ibm -name "*.lil" -exec strip {} ";" && \ diff --git a/experimental/devcontainers/Dockerfile.ace-minimal b/experimental/devcontainers/Dockerfile.ace-minimal index a3bcacf..5b57f44 100644 --- a/experimental/devcontainers/Dockerfile.ace-minimal +++ b/experimental/devcontainers/Dockerfile.ace-minimal @@ -4,12 +4,13 @@ MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) # Build: # -# docker build -t ace-minimal-devcontainer:12.0.4.0 -f Dockerfile.ace-minimal . +# docker build -t ace-minimal-devcontainer:12.0.10.0 -f Dockerfile.ace-minimal . -ARG USERNAME -ARG PASSWORD -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 # Prevent errors about having no terminal when using apt-get ENV DEBIAN_FRONTEND noninteractive @@ -28,12 +29,16 @@ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ cat /tmp/excludes-globalcache.txt >> /tmp/all-excludes.txt && \ # IMS is optional cat /tmp/excludes-ims.txt >> /tmp/all-excludes.txt && \ +# Java11 is not required + cat /tmp/excludes-java11.txt >> /tmp/all-excludes.txt && \ # node.js support is optional; use --no-nodejs on server start line cat /tmp/excludes-nodejs.txt >> /tmp/all-excludes.txt && \ # NPM install support is optional cat /tmp/excludes-npm.txt >> /tmp/all-excludes.txt && \ # ODBC drivers are optional cat /tmp/excludes-odbc.txt >> /tmp/all-excludes.txt && \ +# Telemetry is optional + cat /tmp/excludes-telemetry.txt >> /tmp/all-excludes.txt && \ # Toolkit is optional cat /tmp/excludes-tools.txt >> /tmp/all-excludes.txt && \ # Web UI support optional; use --admin-rest-api -1 on server start line @@ -44,12 +49,14 @@ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ cat /tmp/excludes-xmlt.txt >> /tmp/all-excludes.txt # Install ACE and accept the license -RUN apt-get update && apt-get install -y --no-install-recommends curl zip binutils && \ +RUN apt-get update && apt-get install -y aria2 zip binutils && \ mkdir /opt/ibm && \ + cd /tmp && \ echo Downloading package ${DOWNLOAD_URL} && \ - curl ${DOWNLOAD_URL} \ - | tar zx --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12.* /opt/ibm/ace-12 && \ find /opt/ibm -name "*.so*" -exec strip {} ";" && \ find /opt/ibm -name "*.wrk" -exec strip {} ";" && \ find /opt/ibm -name "*.lil" -exec strip {} ";" && \ @@ -64,6 +71,9 @@ RUN usermod -a -G mqbrkrs vscode \ && echo ". /opt/ibm/ace-12/server/bin/mqsiprofile" >> /home/vscode/.bashrc \ && echo ". /opt/ibm/ace-12/server/bin/mqsiprofile" >> /home/vscode/.profile +# Switch off the components that aren't in the image +COPY minimal-image.components.yaml /opt/ibm/ace-12/image.components.yaml + # Install Maven for development use. # # The standard Maven packages on most distros bring a lot of extra packages with diff --git a/experimental/devcontainers/Dockerfile.mqclient b/experimental/devcontainers/Dockerfile.mqclient index b592aeb..6dbe47d 100644 --- a/experimental/devcontainers/Dockerfile.mqclient +++ b/experimental/devcontainers/Dockerfile.mqclient @@ -4,13 +4,14 @@ MAINTAINER Trevor Dolby (@trevor-dolby-at-ibm-com) # Build: # -# docker build -t ace-devcontainer-mqclient:12.0.4.0 -f Dockerfile.mqclient . +# docker build -t ace-devcontainer-mqclient:12.0.10.0 -f Dockerfile.mqclient . -ARG USERNAME -ARG PASSWORD -ARG DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.4.0-ACE-LINUX64-DEVELOPER.tar.gz -ARG PRODUCT_LABEL=ace-12.0.4.0 -ARG MQ_DOWNLOAD_URL=http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.3.1.0-IBM-MQC-Redist-LinuxX64.tar.gz +# Later versions from the same site, or else via the Developer edition download site linked from +# https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +ARG DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/integration/12.0.10.0-ACE-LINUX64-DEVELOPER.tar.gz +ARG MQ_DOWNLOAD_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.3.2.0-IBM-MQC-Redist-LinuxX64.tar.gz +# Can be set higher if needed +ARG DOWNLOAD_CONNECTION_COUNT=1 # Prevent errors about having no terminal when using apt-get ENV DEBIAN_FRONTEND noninteractive @@ -19,18 +20,24 @@ ENV DEBIAN_FRONTEND noninteractive COPY excludes*txt /tmp/ RUN cat /tmp/excludes-base.txt >> /tmp/all-excludes.txt && \ +# Java11 is not required + cat /tmp/excludes-java11.txt >> /tmp/all-excludes.txt && \ +# ToolkitDiscovery connectors are optional + cat /tmp/excludes-nodejs-all.txt >> /tmp/all-excludes.txt && \ # Toolkit is optional cat /tmp/excludes-tools.txt >> /tmp/all-excludes.txt && \ # WSRR nodes are optional cat /tmp/excludes-wsrr.txt >> /tmp/all-excludes.txt # Install ACE and accept the license -RUN apt-get update && apt-get install -y --no-install-recommends curl zip binutils && \ +RUN apt-get update && apt-get install -y aria2 zip binutils && \ mkdir /opt/ibm && \ + cd /tmp && \ echo Downloading package ${DOWNLOAD_URL} && \ - curl ${DOWNLOAD_URL} \ - | tar zx --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ - mv /opt/ibm/${PRODUCT_LABEL} /opt/ibm/ace-12 && \ + aria2c -s ${DOWNLOAD_CONNECTION_COUNT} -j ${DOWNLOAD_CONNECTION_COUNT} -x ${DOWNLOAD_CONNECTION_COUNT} "${DOWNLOAD_URL}" && \ + tar -zxf *12.0*tar.gz --exclude-from=/tmp/all-excludes.txt --directory /opt/ibm && \ + rm -f *12.0*tar.gz && \ + mv /opt/ibm/ace-12.* /opt/ibm/ace-12 && \ find /opt/ibm -name "*.so*" -exec strip {} ";" && \ find /opt/ibm -name "*.wrk" -exec strip {} ";" && \ find /opt/ibm -name "*.lil" -exec strip {} ";" && \ diff --git a/experimental/devcontainers/excludes-java11.txt b/experimental/devcontainers/excludes-java11.txt new file mode 100644 index 0000000..54757ff --- /dev/null +++ b/experimental/devcontainers/excludes-java11.txt @@ -0,0 +1 @@ +*/common/java11 diff --git a/experimental/devcontainers/excludes-nodejs-all.txt b/experimental/devcontainers/excludes-nodejs-all.txt new file mode 100644 index 0000000..0787514 --- /dev/null +++ b/experimental/devcontainers/excludes-nodejs-all.txt @@ -0,0 +1,2 @@ +*/server/nodejs_all* + diff --git a/experimental/devcontainers/excludes-telemetry.txt b/experimental/devcontainers/excludes-telemetry.txt new file mode 100644 index 0000000..c8ff4f2 --- /dev/null +++ b/experimental/devcontainers/excludes-telemetry.txt @@ -0,0 +1,2 @@ +*/server/lib/libimbtelemetry.so +*/server/lil/imbopentelemetry.lil diff --git a/experimental/devcontainers/minimal-image.components.yaml b/experimental/devcontainers/minimal-image.components.yaml new file mode 100644 index 0000000..0c050c6 --- /dev/null +++ b/experimental/devcontainers/minimal-image.components.yaml @@ -0,0 +1,37 @@ +--- +# ACE Integration Server components file +# +# Created at 12.0.7.0 - 42cd3bab4d5746527981157e644b9cab-a00f286a885cfbb65a3fae1ad292e418 +# +# General notes : +# - Integration Server will load server.components.yaml from directory set via --work-dir +# - To ensure valid YAML avoid any use of TAB characters + +serverComponentsVersion: 1 +# reportExcludedComponents: true # Controls whether messages are written on integration server start-up indicating components are excluded. Default is true. + +# Main embedded run-times +NodeJS: false # Do not create NodeJS run-time within the Integration Server + +Nodes: + .NET: false # Controls whether the .NET nodes are loaded. + +JavaNodes: # If JVM is set to false then the JavaNodes section will not apply + Adapters: false # Controls whether the SAP, Oracle JD Edwards, Oracle Peoplesoft and Oracle Siebel nodes are loaded. + CICS: false # Controls whether the CICSRequest node is loaded. + IMS: false # Controls whether the IMSRequest node is loaded. + ODM: false # Controls whether the ODMRules node is loaded. + XSLT: false # Controls whether the XSLTransform nodes are loaded. + WSRR: false # Controls whether the WSRR EndpointLookup and RegistryLookup nodes are loaded (if this component is installed). + +JavaScriptNodes: # If NodeJS is set to false then the JavaScriptNodes section will not apply + Salesforce: false # Controls if the Salesforce connector is loaded. + LoopBack: false # Controls if the LoopBack connector is loaded. + +ResourceManagers: + GlobalCache: false # Controls whether the GlobalCache resources are loaded. + +FlowSecurityProviders: + LDAP: false # Controls whether the LDAP Security provider is loaded for message flow security. + TFIM: false # Controls whether the TFIM Security provider is loaded for message flow security. + WS-Trust: false # Controls whether the WS-Trust v1.3 STS Security provider is loaded for message flow security. diff --git a/experimental/windows/README.md b/experimental/windows/README.md new file mode 100644 index 0000000..33f4a89 --- /dev/null +++ b/experimental/windows/README.md @@ -0,0 +1,10 @@ +# Windows containers + +Simple docker images for ACE v12 on Windows, using Windows containers. These containers +will run Windows Server Core, and are not running Linux containers on Windows. + +Dockefiles in the following directories are used for various purposes: + +- ace-basic can run the product server, including all files except the toolkit. +- ace-sample contains a sample BAR file and Dockerfiles for building runnable images to serve HTTP clients. + diff --git a/experimental/windows/ace-basic/Dockerfile b/experimental/windows/ace-basic/Dockerfile new file mode 100644 index 0000000..a90553a --- /dev/null +++ b/experimental/windows/ace-basic/Dockerfile @@ -0,0 +1,27 @@ +ARG FROMIMAGE=mcr.microsoft.com/windows/servercore:ltsc2019 +#ARG FROMIMAGE=jenkins/agent:windowsservercore-ltsc2019 +FROM ${FROMIMAGE} + +# docker build -t ace-basic:12.0.10.0-windows . + +# Update as needed +ARG DOWNLOAD_URL=https://iwm.dhe.ibm.com/sdfdl/v2/regs2/mbford/Xa.2/Xb.WJL1CuPI9gANmbDdDxOhZ8PDHiJ0fYKPUUM7e4LXUys/Xc.12.0.10.0-ACE-WIN64-DEVELOPER.zip/Xd./Xf.lPr.D1vk/Xg.12203400/Xi.swg-wmbfd/XY.regsrvs/XZ.224GETTSkG6f3cguPd6ugJwv0vB5Q9nY/12.0.10.0-ACE-WIN64-DEVELOPER.zip + +WORKDIR c:\\tmp + +# The commands to download and install the ACE product are more easily +# run from a CMD file than from within the Dockerfile itself. +COPY download-and-install-ace.cmd c:\\tmp\\download-and-install-ace.cmd +RUN c:\\tmp\\download-and-install-ace.cmd %DOWNLOAD_URL% + +# Used to debug individual pieces +# +#COPY download-ace.cmd c:\\tmp\\download-ace.cmd +#RUN c:\\tmp\\download-ace.cmd %DOWNLOAD_URL% +#COPY unpack-ace.cmd c:\\tmp\\unpack-ace.cmd +#RUN c:\\tmp\\unpack-ace.cmd +#COPY install-ace.cmd c:\\tmp\\install-ace.cmd +#RUN c:\\tmp\\install-ace.cmd + +# Could also be set to ContainerUser +USER ContainerAdministrator diff --git a/experimental/windows/ace-basic/README.md b/experimental/windows/ace-basic/README.md new file mode 100644 index 0000000..33a5184 --- /dev/null +++ b/experimental/windows/ace-basic/README.md @@ -0,0 +1,50 @@ +# ACE server container for Windows + +This directory contains the files required to build a Windows container with a Windows +Server 2019 base image as the default. For other versions of Windows, see Microsoft +documentation for the correct base image, but note that the "nanoserver" base images +cannot be used with ACE due to their lack of MSI installer support. + +This image includes the ACE product without the UI components (no toolkit or Electron app) +but does include all the server components except the WSRR nodes. + +Build as follows: +``` +docker build -t ace-basic:12.0.10.0-windows . +``` + +The Dockerfile is constructed to minimize the resulting image size, with the downloaded +files extracted, installed, and deleted within a single RUN command to avoid persisting +the install image in a layer. See [Google's image-creation best practices](https://cloud.google.com/architecture/best-practices-for-building-containers#reduce_the_amount_of_clutter_in_your_image) +for more information on that approach and how it helps reduce image size. + +### Setting the correct product URL + +The Dockerfile takes a `DOWNLOAD_URL` parameter that will need to be specified to build +a specific version of the product. This is provided on the command line using the +`--build-arg` parameter, with a default in the Dockerfile that is unlikely to work. + +This value will need updating to an ACE developer edition URL from the IBM website. Start +at https://www.ibm.com/docs/en/app-connect/12.0?topic=enterprise-download-ace-developer-edition-get-started +and proceed through the pages until the main download page with a link: + +![download page](ace-dev-edition-download-windows.png) + +The link is likely to be of the form +``` +https://iwm.dhe.ibm.com/sdfdl/v2/regs2/mbford/Xa.2/Xb.WJL1cUPI9gANEhP8GuPD_qX1rj6x5R4yTUM7s_C2ue8/Xc.12.0.10.0-ACE-WIN64-DEVELOPER.zip/Xd./Xf.LpR.D1vk/Xg.12164875/Xi.swg-wmbfd/XY.regsrvs/XZ.pPVETUejcqPsVfDVKbdNu6IRpo4TkyKu/12.0.10.0-ACE-WIN64-DEVELOPER.zip +``` +Copy that link into the Dockerfile itself or use it as the DOWNLOAD_URL build parameter. + +## Building a Jenkins worker image + +ACE can be used in a Jenkins container built from the standard Jenkins-provided +Windows container. To build an ACE-enabled container image, add +`--build-arg FROMIMAGE=jenkins/agent:windowsservercore-ltsc2019` to the server build line above: +``` +docker build --build-arg FROMIMAGE=jenkins/agent:windowsservercore-ltsc2019 -t ace-jenkins:12.0.10.0-windows . +``` +and refer to it as normal from Jenkins. For a Jenkins pipeline, this might look as follows: +``` + agent { docker { image 'ace-jenkins:12.0.10.0-windows' } } +``` \ No newline at end of file diff --git a/experimental/windows/ace-basic/ace-dev-edition-download-windows.png b/experimental/windows/ace-basic/ace-dev-edition-download-windows.png new file mode 100644 index 0000000000000000000000000000000000000000..c97dc111bd663def13311eb15109f95e5671d41c GIT binary patch literal 6099 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 literal 0 HcmV?d00001 diff --git a/experimental/windows/ace-sample/aceFunction.bar b/experimental/windows/ace-sample/aceFunction.bar new file mode 100644 index 0000000000000000000000000000000000000000..39d02bc4e25e9f511033c206b77ad949822503ad GIT binary patch literal 6775 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 | tee -a /tmp/deploys && \ ibmint deploy --input-bar-file /tmp/temp.bar --output-work-directory /home/aceuser/ace-server/ 2>&1 | tee -a /tmp/deploys; done \ && ibmint optimize server --work-dir /home/aceuser/ace-server \ - && chmod -R ugo+rwx /home/aceuser/ + && chmod -R ugo+rwx /home/aceuser/ \ + && chmod -R ugo+rwx /var/mqsi/ USER 1001 diff --git a/samples/bars/README.md b/samples/bars/README.md index 0a72a33..86415a7 100644 --- a/samples/bars/README.md +++ b/samples/bars/README.md @@ -26,7 +26,7 @@ First [build the ACE image](../../README.md#Building-a-container-image) or obtai In the `sample/bars` folder: ```bash -docker build -t aceapp --build-arg FROMIMAGE=ace:12.0.7.0-r1 --file Dockerfile . +docker build -t aceapp --build-arg FROMIMAGE=ace:12.0.10.0-r1 --file Dockerfile . ``` ## Running the sample @@ -44,6 +44,6 @@ To exercise the flow, run a command such as: ```bash curl --request GET \ - --url 'http://96fa448ea76e:7800/customerdb/v1/customers?max=REPLACE_THIS_VALUE' \ + --url 'http://localhost:7800/customerdb/v1/customers?max=10' \ --header 'accept: application/json' ``` diff --git a/samples/mqclient/Dockerfile b/samples/mqclient/Dockerfile index ea0d448..2aa72b1 100644 --- a/samples/mqclient/Dockerfile +++ b/samples/mqclient/Dockerfile @@ -1,4 +1,4 @@ -ARG FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.8.0-r1 +ARG FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.10.0-r1 FROM ${FROMIMAGE} USER root @@ -27,4 +27,4 @@ RUN chmod u+x /usr/local/bin/install-*.sh \ ENV MQCERTLABL=aceclient -USER 1001 +USER 1001 \ No newline at end of file diff --git a/samples/mqclient/README.md b/samples/mqclient/README.md index e55d7ea..3f238b0 100644 --- a/samples/mqclient/README.md +++ b/samples/mqclient/README.md @@ -1,5 +1,5 @@ -# Bars Sample +# MQClient Sample ## What is in the sample? @@ -16,7 +16,7 @@ for the client. In this folder, run the docker command as follows (replacing the product version and MQ link as appropriate): ```bash -docker build -t aceapp --build-arg FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.8.0-r1 --build-arg MQ_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.3.2.0-IBM-MQC-Redist-LinuxX64.tar.gz --file Dockerfile . +docker build -t aceappmqclient --build-arg FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.10.0-r1 --build-arg MQ_URL=https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.3.2.0-IBM-MQC-Redist-LinuxX64.tar.gz --file Dockerfile . ``` ## Running the sample @@ -24,7 +24,7 @@ docker build -t aceapp --build-arg FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.8.0-r1 - To run the container, launch the pod using a command such as: ```bash -docker run -d -p 7600:7600 -p 7800:7800 -e LICENSE=accept aceapp +docker run -d -p 7600:7600 -p 7800:7800 -e LICENSE=accept aceappmqclient ``` This wll then start an IntegrationServer with the MQ Client installed. diff --git a/samples/mqclient/install-mq-client-prereqs.sh b/samples/mqclient/install-mq-client-prereqs.sh index a2f8222..0d3f607 100644 --- a/samples/mqclient/install-mq-client-prereqs.sh +++ b/samples/mqclient/install-mq-client-prereqs.sh @@ -22,11 +22,11 @@ test -f /usr/bin/microdnf && MICRODNF=true || MICRODNF=false test -f /usr/bin/rpm && RPM=true || RPM=false if ($RPM); then - EXTRA_RPMS="bash bc ca-certificates file findutils gawk glibc-common grep ncurses-compat-libs passwd procps-ng sed shadow-utils tar util-linux which" - $MICRODNF && microdnf install ${EXTRA_RPMS} + EXTRA_RPMS="bash bc ca-certificates file findutils gawk glibc-common grep passwd procps-ng sed shadow-utils tar util-linux which" + $MICRODNF && microdnf install -y ${EXTRA_RPMS} else - $MICRODNF && microdnf install findutils + $MICRODNF && microdnf install -y findutils fi # Clean up cached files -$MICRODNF && microdnf clean all \ No newline at end of file +$MICRODNF && microdnf clean all diff --git a/samples/scripts/Dockerfile b/samples/scripts/Dockerfile index d3e6f7b..ca28a26 100644 --- a/samples/scripts/Dockerfile +++ b/samples/scripts/Dockerfile @@ -1,10 +1,10 @@ -ARG FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.4.0-r1 +ARG FROMIMAGE=cp.icr.io/cp/appc/ace:12.0.10.0-r1 FROM ${FROMIMAGE} USER root # Required for the setdbparms script to run -RUN microdnf update && microdnf install python3 && microdnf clean all \ +RUN microdnf update && microdnf install -y python3 && microdnf clean all \ && ln -s /usr/bin/python3 /usr/local/bin/python COPY server.conf.yaml /home/aceuser/ace-server/ @@ -13,4 +13,4 @@ RUN mkdir -p /home/aceuser/initial-config/setdbparms/ COPY ace_config_* /home/aceuser/initial-config/ RUN chmod -R ugo+rwx /home/aceuser/ -USER 1001 \ No newline at end of file +USER 1001 diff --git a/samples/scripts/README.md b/samples/scripts/README.md index 7fb09d0..3a3f82c 100644 --- a/samples/scripts/README.md +++ b/samples/scripts/README.md @@ -12,7 +12,7 @@ First [build the ACE image](../../README.md#Building-a-container-image) or obtai In the `sample/scripts` folder: ```bash -docker build -t aceapp --build-arg FROMIMAGE=ace:12.0.4.0-r1 --file Dockerfile . +docker build -t aceapp --build-arg FROMIMAGE=ace:12.0.10.0-r1 --file Dockerfile . ``` ## Running the sample From ef7d7b5f372ff80d42ba8b3482eefebdec3352dd Mon Sep 17 00:00:00 2001 From: Dom Storey Date: Mon, 11 Dec 2023 14:07:47 +0000 Subject: [PATCH 2/2] not needed --- asoc/appscan-config.xml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 asoc/appscan-config.xml diff --git a/asoc/appscan-config.xml b/asoc/appscan-config.xml deleted file mode 100644 index ee25319..0000000 --- a/asoc/appscan-config.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - asoc/ - jenkins-build-scripts/ - - -