diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 42f2ce7..9976ddf 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -39,22 +39,22 @@ jobs: BUILD_IMAGE_TAG: boxlang # ubi9 Builds - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Base.Dockerfile + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Base.Dockerfile BUILD_IMAGE_TAG: ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Base.Dockerfile - BUILD_IMAGE_TAG: jre11-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/base/ubi9.JDK11.Dockerfile - BUILD_IMAGE_TAG: jdk11-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Lucee5.Dockerfile - BUILD_IMAGE_TAG: lucee5-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/LuceeLight.Dockerfile - BUILD_IMAGE_TAG: lucee-light-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Adobe2018.Dockerfile - BUILD_IMAGE_TAG: adobe2018-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Adobe2021.Dockerfile - BUILD_IMAGE_TAG: adobe2021-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/BoxLang.Dockerfile - BUILD_IMAGE_TAG: boxlang-ubi9 + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Base.Dockerfile + BUILD_IMAGE_TAG: jre11-rhel + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JDK11.Dockerfile + BUILD_IMAGE_TAG: jdk11-rhel + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Lucee5.Dockerfile + BUILD_IMAGE_TAG: lucee5-rhel + - BUILD_IMAGE_DOCKERFILE: builds/redhat/LuceeLight.Dockerfile + BUILD_IMAGE_TAG: lucee-light-rhel + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Adobe2018.Dockerfile + BUILD_IMAGE_TAG: adobe2018-rhel + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Adobe2021.Dockerfile + BUILD_IMAGE_TAG: adobe2021-rhel + - BUILD_IMAGE_DOCKERFILE: builds/redhat/BoxLang.Dockerfile + BUILD_IMAGE_TAG: boxlang-rhel # Alpine builds # Note: No JDK builders currently support alpine with ARM @@ -78,7 +78,7 @@ jobs: BUILD_IMAGE_TAG: boxlang-alpine steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up QEMU uses: docker/setup-qemu-action@master diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 691f925..cf5d492 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,112 +13,268 @@ concurrency: cancel-in-progress: true jobs: - publish: + build-base-images: runs-on: ubuntu-latest strategy: matrix: include: - - BUILD_IMAGE_DOCKERFILE: builds/debian/Base.Dockerfile - BUILD_IMAGE_TAG: latest - - BUILD_IMAGE_DOCKERFILE: builds/debian/Base.Dockerfile - BUILD_IMAGE_TAG: jre11 + # Foundation images (builds/base/* - eclipse-temurin based) with promoted tags + - BUILD_IMAGE_DOCKERFILE: builds/base/Dockerfile + BUILD_IMAGE_TAGS: "latest,jre11" - BUILD_IMAGE_DOCKERFILE: builds/base/JDK11.Dockerfile - BUILD_IMAGE_TAG: jdk11 + BUILD_IMAGE_TAGS: "jdk11" - BUILD_IMAGE_DOCKERFILE: builds/base/JDK17.Dockerfile - BUILD_IMAGE_TAG: jdk17 + BUILD_IMAGE_TAGS: "jdk17" - BUILD_IMAGE_DOCKERFILE: builds/base/JDK21.Dockerfile - BUILD_IMAGE_TAG: jdk21 - - BUILD_IMAGE_DOCKERFILE: builds/base/JDK23.Dockerfile - BUILD_IMAGE_TAG: jdk23 + BUILD_IMAGE_TAGS: "jdk21" - BUILD_IMAGE_DOCKERFILE: builds/base/JDK24.Dockerfile - BUILD_IMAGE_TAG: jdk24 + BUILD_IMAGE_TAGS: "jdk24" + - BUILD_IMAGE_DOCKERFILE: builds/base/JDK25.Dockerfile + BUILD_IMAGE_TAGS: "jdk25" - BUILD_IMAGE_DOCKERFILE: builds/base/JRE17.Dockerfile - BUILD_IMAGE_TAG: jre17 - - BUILD_IMAGE_DOCKERFILE: builds/debian/Base.JDK8.Dockerfile - BUILD_IMAGE_TAG: jdk8 + BUILD_IMAGE_TAGS: "jre17" + - BUILD_IMAGE_DOCKERFILE: builds/base/JRE21.Dockerfile + BUILD_IMAGE_TAGS: "jre21" + - BUILD_IMAGE_DOCKERFILE: builds/base/JRE24.Dockerfile + BUILD_IMAGE_TAGS: "jre24" + - BUILD_IMAGE_DOCKERFILE: builds/base/JRE25.Dockerfile + BUILD_IMAGE_TAGS: "jre25" + + # RHEL/UBI9 foundation images with promoted tags + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.Dockerfile + BUILD_IMAGE_TAGS: "ubi9,jre11-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JDK11.Dockerfile + BUILD_IMAGE_TAGS: "jdk11-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JDK17.Dockerfile + BUILD_IMAGE_TAGS: "jdk17-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JDK21.Dockerfile + BUILD_IMAGE_TAGS: "jdk21-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JDK24.Dockerfile + BUILD_IMAGE_TAGS: "jdk24-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JRE17.Dockerfile + BUILD_IMAGE_TAGS: "jre17-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JRE21.Dockerfile + BUILD_IMAGE_TAGS: "jre21-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JRE24.Dockerfile + BUILD_IMAGE_TAGS: "jre24-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JDK25.Dockerfile + BUILD_IMAGE_TAGS: "jdk25-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/base/rhel.JRE25.Dockerfile + BUILD_IMAGE_TAGS: "jre25-rhel" + + # Alpine foundation images with promoted tags + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.Dockerfile + BUILD_IMAGE_TAGS: "alpine,jre11-alpine" + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JDK11.Dockerfile + BUILD_IMAGE_TAGS: "jdk11-alpine" + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JDK17.Dockerfile + BUILD_IMAGE_TAGS: "jdk17-alpine" + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JDK21.Dockerfile + BUILD_IMAGE_TAGS: "jdk21-alpine" + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JRE17.Dockerfile + BUILD_IMAGE_TAGS: "jre17-alpine" + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JRE21.Dockerfile + BUILD_IMAGE_TAGS: "jre21-alpine" + - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JRE25.Dockerfile + BUILD_IMAGE_TAGS: "jre25-alpine" + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up QEMU + uses: docker/setup-qemu-action@master + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@master + + - name: Setup Base Image Builds + id: setup + env: + DOCKER_IMAGE: ortussolutions/commandbox + BUILD_IMAGE_TAGS: ${{ matrix.BUILD_IMAGE_TAGS }} + COMMANDBOX_VERSION: 6.2.1 + IMAGE_VERSION: 3.14.8 + run: | + # Split the comma-separated tags + IFS=',' read -ra TAG_ARRAY <<< "$BUILD_IMAGE_TAGS" + + # Initialize arrays for final tags + FINAL_TAGS=() + + # Process each tag + for tag in "${TAG_ARRAY[@]}"; do + # Tag Builds + if [[ $GITHUB_REF == refs/tags/* ]]; then + if [[ $tag == "latest" ]]; then + FINAL_TAGS+=("${GITHUB_REF#refs/tags/v}") + else + FINAL_TAGS+=("${tag}-${GITHUB_REF#refs/tags/v}") + fi + elif [[ $GITHUB_REF == 'refs/heads/development' ]]; then + # Snapshot builds + FINAL_TAGS+=("${tag}-snapshot") + else + # Main branch builds + FINAL_TAGS+=("${tag}") + fi + done + + # Prefix with Docker image name + FULL_TAGS="" + for tag in "${FINAL_TAGS[@]}"; do + if [[ -z "$FULL_TAGS" ]]; then + FULL_TAGS="${DOCKER_IMAGE}:${tag}" + else + FULL_TAGS="${FULL_TAGS},${DOCKER_IMAGE}:${tag}" + fi + done + + # Determine architecture platforms based on tag content + if [[ ${BUILD_IMAGE_TAGS} == *"alpine"* ]] && [[ ${BUILD_IMAGE_TAGS} != *"jdk21-alpine"* ]] && [[ ${BUILD_IMAGE_TAGS} != *"boxlang-alpine"* ]]; then + ARCH_PLATFORMS=linux/amd64 + else + ARCH_PLATFORMS=linux/amd64,linux/arm64/v8 + fi + + # Set output parameters. + echo "arch_platforms=${ARCH_PLATFORMS}" >> $GITHUB_ENV + echo "image_version=${IMAGE_VERSION}" >> $GITHUB_ENV + echo "commandbox_version=${COMMANDBOX_VERSION}" >> $GITHUB_ENV + echo "IMAGE_TAG=${FULL_TAGS}" >> $GITHUB_ENV + + # Set the first tag for testing purposes + FIRST_TAG="${TAG_ARRAY[0]}" + echo "BUILD_IMAGE_TAG=${FIRST_TAG}" >> $GITHUB_ENV + + - name: Test built image + env: + COMMANDBOX_VERSION: ${{ env.commandbox_version }} + DOCKER_BUILDKIT: 1 + COMPOSE_DOCKER_CLI_BUILD: 1 + BUILD_IMAGE_DOCKERFILE: ${{ matrix.BUILD_IMAGE_DOCKERFILE }} + BUILD_IMAGE_TAG: ${{ env.BUILD_IMAGE_TAG }} + BASE_IMAGE_ARG: + run: | + docker compose -f docker-compose.test.yml up --build --exit-code-from sut + docker compose -f docker-compose.secret-test.yml up --build --exit-code-from sut + + - name: DockerHub Login + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and Push Base Images + if: github.event_name != 'pull_request' + uses: docker/build-push-action@v6 + env: + DOCKER_BUILDKIT: 1 + with: + provenance: false + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ${{ matrix.BUILD_IMAGE_DOCKERFILE }} + build-args: | + COMMANDBOX_VERSION=${{ env.commandbox_version }} + platforms: ${{ env.arch_platforms }} + push: true + tags: ${{ env.IMAGE_TAG }} + + build-engine-images: + runs-on: ubuntu-latest + needs: build-base-images + strategy: + matrix: + include: + # Debian engine builds - BUILD_IMAGE_DOCKERFILE: builds/debian/Lucee5.Dockerfile - BUILD_IMAGE_TAG: lucee5 + BUILD_IMAGE_TAGS: "lucee5" + BASE_IMAGE: "ortussolutions/commandbox:latest" - BUILD_IMAGE_DOCKERFILE: builds/debian/Lucee6.Dockerfile - BUILD_IMAGE_TAG: lucee6 + BUILD_IMAGE_TAGS: "lucee6" + BASE_IMAGE: "ortussolutions/commandbox:jre17" + - BUILD_IMAGE_DOCKERFILE: builds/debian/Lucee7.Dockerfile + BUILD_IMAGE_TAGS: "lucee7" + BASE_IMAGE: "ortussolutions/commandbox:jre25" - BUILD_IMAGE_DOCKERFILE: builds/debian/LuceeLight.Dockerfile - BUILD_IMAGE_TAG: lucee-light + BUILD_IMAGE_TAGS: "lucee-light" + BASE_IMAGE: "ortussolutions/commandbox:latest" - BUILD_IMAGE_DOCKERFILE: builds/debian/Lucee5Light.Dockerfile - BUILD_IMAGE_TAG: lucee5-light + BUILD_IMAGE_TAGS: "lucee5-light" + BASE_IMAGE: "ortussolutions/commandbox:latest" - BUILD_IMAGE_DOCKERFILE: builds/debian/Adobe2021.Dockerfile - BUILD_IMAGE_TAG: adobe2021 + BUILD_IMAGE_TAGS: "adobe2021" + BASE_IMAGE: "ortussolutions/commandbox:jdk11" - BUILD_IMAGE_DOCKERFILE: builds/debian/Adobe2023.Dockerfile - BUILD_IMAGE_TAG: adobe2023 + BUILD_IMAGE_TAGS: "adobe2023" + BASE_IMAGE: "ortussolutions/commandbox:jdk17" - BUILD_IMAGE_DOCKERFILE: builds/debian/Adobe2025.Dockerfile - BUILD_IMAGE_TAG: adobe2025 + BUILD_IMAGE_TAGS: "adobe2025" + BASE_IMAGE: "ortussolutions/commandbox:jdk21" - BUILD_IMAGE_DOCKERFILE: builds/debian/BoxLang.Dockerfile - BUILD_IMAGE_TAG: boxlang - - # ubi9 Builds - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Base.Dockerfile - BUILD_IMAGE_TAG: ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Base.Dockerfile - BUILD_IMAGE_TAG: jre11-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/base/ubi9.JDK11.Dockerfile - BUILD_IMAGE_TAG: jdk11-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/base/ubi9.JDK17.Dockerfile - BUILD_IMAGE_TAG: jdk17-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/base/ubi9.JDK21.Dockerfile - BUILD_IMAGE_TAG: jdk21-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/base/ubi9.JRE17.Dockerfile - BUILD_IMAGE_TAG: jre17-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Lucee5.Dockerfile - BUILD_IMAGE_TAG: lucee5-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Lucee6.Dockerfile - BUILD_IMAGE_TAG: lucee6-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/LuceeLight.Dockerfile - BUILD_IMAGE_TAG: lucee-light-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Lucee5Light.Dockerfile - BUILD_IMAGE_TAG: lucee5-light-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Adobe2021.Dockerfile - BUILD_IMAGE_TAG: adobe2021-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Adobe2023.Dockerfile - BUILD_IMAGE_TAG: adobe2023-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/Adobe2025.Dockerfile - BUILD_IMAGE_TAG: adobe2025-ubi9 - - BUILD_IMAGE_DOCKERFILE: builds/ubi9/BoxLang.Dockerfile - BUILD_IMAGE_TAG: boxlang-ubi9 - - # Alpine builds - # Note: No JDK builders currently support alpine with ARM - - BUILD_IMAGE_DOCKERFILE: builds/alpine/Base.Dockerfile - BUILD_IMAGE_TAG: alpine - - BUILD_IMAGE_DOCKERFILE: builds/alpine/Base.Dockerfile - BUILD_IMAGE_TAG: jre11-alpine - - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JDK11.Dockerfile - BUILD_IMAGE_TAG: jdk11-alpine - - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JDK17.Dockerfile - BUILD_IMAGE_TAG: jdk17-alpine - - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JDK21.Dockerfile - BUILD_IMAGE_TAG: jdk21-alpine - - BUILD_IMAGE_DOCKERFILE: builds/base/Alpine.JRE17.Dockerfile - BUILD_IMAGE_TAG: jre17-alpine - - BUILD_IMAGE_DOCKERFILE: builds/alpine/Base.JDK8.Dockerfile - BUILD_IMAGE_TAG: jdk8-alpine + BUILD_IMAGE_TAGS: "boxlang" + BASE_IMAGE: "ortussolutions/commandbox:jdk21" + + # RHEL engine builds + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Lucee5.Dockerfile + BUILD_IMAGE_TAGS: "lucee5-rhel" + BASE_IMAGE: "ortussolutions/commandbox:ubi9" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Lucee6.Dockerfile + BUILD_IMAGE_TAGS: "lucee6-rhel" + BASE_IMAGE: "ortussolutions/commandbox:ubi9" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Lucee7.Dockerfile + BUILD_IMAGE_TAGS: "lucee7-rhel" + BASE_IMAGE: "ortussolutions/commandbox:jre25-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/LuceeLight.Dockerfile + BUILD_IMAGE_TAGS: "lucee-light-rhel" + BASE_IMAGE: "ortussolutions/commandbox:ubi9" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Lucee5Light.Dockerfile + BUILD_IMAGE_TAGS: "lucee5-light-rhel" + BASE_IMAGE: "ortussolutions/commandbox:ubi9" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Adobe2023.Dockerfile + BUILD_IMAGE_TAGS: "adobe2023-rhel" + BASE_IMAGE: "ortussolutions/commandbox:jdk17-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/Adobe2025.Dockerfile + BUILD_IMAGE_TAGS: "adobe2025-rhel" + BASE_IMAGE: "ortussolutions/commandbox:jdk21-rhel" + - BUILD_IMAGE_DOCKERFILE: builds/redhat/BoxLang.Dockerfile + BUILD_IMAGE_TAGS: "boxlang-rhel" + BASE_IMAGE: "ortussolutions/commandbox:jdk21-rhel" + + # Alpine engine builds - BUILD_IMAGE_DOCKERFILE: builds/alpine/Lucee5.Dockerfile - BUILD_IMAGE_TAG: lucee5-alpine + BUILD_IMAGE_TAGS: "lucee5-alpine" + BASE_IMAGE: "ortussolutions/commandbox:alpine" - BUILD_IMAGE_DOCKERFILE: builds/alpine/Lucee6.Dockerfile - BUILD_IMAGE_TAG: lucee6-alpine + BUILD_IMAGE_TAGS: "lucee6-alpine" + BASE_IMAGE: "ortussolutions/commandbox:alpine" + - BUILD_IMAGE_DOCKERFILE: builds/alpine/Lucee7.Dockerfile + BUILD_IMAGE_TAGS: "lucee7-alpine" + BASE_IMAGE: "ortussolutions/commandbox:jre25-alpine" - BUILD_IMAGE_DOCKERFILE: builds/alpine/LuceeLight.Dockerfile - BUILD_IMAGE_TAG: lucee-light-alpine + BUILD_IMAGE_TAGS: "lucee-light-alpine" + BASE_IMAGE: "ortussolutions/commandbox:alpine" - BUILD_IMAGE_DOCKERFILE: builds/alpine/Lucee5Light.Dockerfile - BUILD_IMAGE_TAG: lucee5-light-alpine - - BUILD_IMAGE_DOCKERFILE: builds/alpine/Adobe2021.Dockerfile - BUILD_IMAGE_TAG: adobe2021-alpine + BUILD_IMAGE_TAGS: "lucee5-light-alpine" + BASE_IMAGE: "ortussolutions/commandbox:alpine" - BUILD_IMAGE_DOCKERFILE: builds/alpine/Adobe2023.Dockerfile - BUILD_IMAGE_TAG: adobe2023-alpine + BUILD_IMAGE_TAGS: "adobe2023-alpine" + BASE_IMAGE: "ortussolutions/commandbox:jdk17-alpine" - BUILD_IMAGE_DOCKERFILE: builds/alpine/Adobe2025.Dockerfile - BUILD_IMAGE_TAG: adobe2025-alpine + BUILD_IMAGE_TAGS: "adobe2025-alpine" + BASE_IMAGE: "ortussolutions/commandbox:jdk21-alpine" - BUILD_IMAGE_DOCKERFILE: builds/alpine/BoxLang.Dockerfile - BUILD_IMAGE_TAG: boxlang-alpine + BUILD_IMAGE_TAGS: "boxlang-alpine" + BASE_IMAGE: "ortussolutions/commandbox:jdk21-alpine" steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up QEMU uses: docker/setup-qemu-action@master @@ -129,33 +285,67 @@ jobs: id: buildx uses: docker/setup-buildx-action@master - - name: Setup Builds + - name: Setup Engine Image Builds id: setup env: DOCKER_IMAGE: ortussolutions/commandbox - BUILD_IMAGE_TAG: ${{ matrix.BUILD_IMAGE_TAG }} + BUILD_IMAGE_TAGS: ${{ matrix.BUILD_IMAGE_TAGS }} + BASE_IMAGE: ${{ matrix.BASE_IMAGE }} COMMANDBOX_VERSION: 6.2.1 - IMAGE_VERSION: 3.13.5 + IMAGE_VERSION: 3.14.0 run: | - # Tag Builds - if [[ $GITHUB_REF == refs/tags/* ]]; then + # Split the comma-separated tags + IFS=',' read -ra TAG_ARRAY <<< "$BUILD_IMAGE_TAGS" + + # Initialize arrays for final tags + FINAL_TAGS=() - if [[ $BUILD_IMAGE_TAG == latest ]]; then - BUILD_IMAGE_TAG="${GITHUB_REF#refs/tags/v}" + # Process each tag + for tag in "${TAG_ARRAY[@]}"; do + # Tag Builds + if [[ $GITHUB_REF == refs/tags/* ]]; then + if [[ $tag == "latest" ]]; then + FINAL_TAGS+=("${GITHUB_REF#refs/tags/v}") + else + FINAL_TAGS+=("${tag}-${GITHUB_REF#refs/tags/v}") + fi + elif [[ $GITHUB_REF == 'refs/heads/development' ]]; then + # Snapshot builds + FINAL_TAGS+=("${tag}-snapshot") else - BUILD_IMAGE_TAG="${BUILD_IMAGE_TAG}-${GITHUB_REF#refs/tags/v}" + # Main branch builds + FINAL_TAGS+=("${tag}") fi + done + # Process base image tag for version builds + ACTUAL_BASE_IMAGE="$BASE_IMAGE" + if [[ $GITHUB_REF == refs/tags/* ]]; then + # Extract tag from base image and add version suffix + BASE_TAG="${BASE_IMAGE#*:}" + if [[ $BASE_TAG == "latest" ]]; then + ACTUAL_BASE_IMAGE="${BASE_IMAGE%:*}:${GITHUB_REF#refs/tags/v}" + else + ACTUAL_BASE_IMAGE="${BASE_IMAGE%:*}:${BASE_TAG}-${GITHUB_REF#refs/tags/v}" + fi elif [[ $GITHUB_REF == 'refs/heads/development' ]]; then - # Snapshot builds - BUILD_IMAGE_TAG="${BUILD_IMAGE_TAG}-snapshot" - + BASE_TAG="${BASE_IMAGE#*:}" + ACTUAL_BASE_IMAGE="${BASE_IMAGE%:*}:${BASE_TAG}-snapshot" fi - TAGS="${DOCKER_IMAGE}:${BUILD_IMAGE_TAG}" + # Prefix with Docker image name + FULL_TAGS="" + for tag in "${FINAL_TAGS[@]}"; do + if [[ -z "$FULL_TAGS" ]]; then + FULL_TAGS="${DOCKER_IMAGE}:${tag}" + else + FULL_TAGS="${FULL_TAGS},${DOCKER_IMAGE}:${tag}" + fi + done - if [[ ${BUILD_IMAGE_TAG} == *"alpine"* ]] && [[ ${BUILD_IMAGE_TAG} != @(jd21-alpine|boxlang-alpine-snapshot|boxlang-alpine|boxlang-alpine-snapshot) ]]; then + # Determine architecture platforms based on tag content + if [[ ${BUILD_IMAGE_TAGS} == *"alpine"* ]] && [[ ${BUILD_IMAGE_TAGS} != *"jdk21-alpine"* ]] && [[ ${BUILD_IMAGE_TAGS} != *"boxlang-alpine"* ]]; then ARCH_PLATFORMS=linux/amd64 else ARCH_PLATFORMS=linux/amd64,linux/arm64/v8 @@ -165,14 +355,21 @@ jobs: echo "arch_platforms=${ARCH_PLATFORMS}" >> $GITHUB_ENV echo "image_version=${IMAGE_VERSION}" >> $GITHUB_ENV echo "commandbox_version=${COMMANDBOX_VERSION}" >> $GITHUB_ENV - echo "IMAGE_TAG=${TAGS}" >> $GITHUB_ENV + echo "IMAGE_TAG=${FULL_TAGS}" >> $GITHUB_ENV + echo "ACTUAL_BASE_IMAGE=${ACTUAL_BASE_IMAGE}" >> $GITHUB_ENV - - name: Test + # Set the first tag for testing purposes + FIRST_TAG="${TAG_ARRAY[0]}" + echo "BUILD_IMAGE_TAG=${FIRST_TAG}" >> $GITHUB_ENV + + - name: Test Engine Images env: COMMANDBOX_VERSION: ${{ env.commandbox_version }} DOCKER_BUILDKIT: 1 COMPOSE_DOCKER_CLI_BUILD: 1 BUILD_IMAGE_DOCKERFILE: ${{ matrix.BUILD_IMAGE_DOCKERFILE }} + BUILD_IMAGE_TAG: ${{ env.BUILD_IMAGE_TAG }} + BASE_IMAGE_ARG: ${{ env.ACTUAL_BASE_IMAGE }} run: | docker compose -f docker-compose.test.yml up --build --exit-code-from sut docker compose -f docker-compose.secret-test.yml up --build --exit-code-from sut @@ -184,7 +381,7 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build Final + - name: Build and push if: github.event_name != 'pull_request' uses: docker/build-push-action@v6 env: @@ -192,9 +389,12 @@ jobs: with: provenance: false builder: ${{ steps.buildx.outputs.name }} - context: . - file: ${{ matrix.BUILD_IMAGE_DOCKERFILE }} - build-args: COMMANDBOX_VERSION=${{ env.commandbox_version }} - platforms: ${{ env.arch_platforms }} + context: ${{ github.workspace }} + file: ${{ github.workspace }}/${{ matrix.BUILD_IMAGE_DOCKERFILE }} push: true - tags: ${{ env.IMAGE_TAG }} + pull: true + build-args: | + COMMANDBOX_VERSION=${{ env.commandbox_version }} + BASE_IMAGE_ARG=${{ env.ACTUAL_BASE_IMAGE }} + platforms: ${{ env.arch_platforms }} + tags: ${{ env.IMAGE_TAG }} \ No newline at end of file diff --git a/.github/workflows/scans.yml b/.github/workflows/scans.yml index 2d5cf6a..54e74d0 100644 --- a/.github/workflows/scans.yml +++ b/.github/workflows/scans.yml @@ -18,8 +18,8 @@ jobs: strategy: matrix: include: - - BUILD_IMAGE_DOCKERFILE: builds/debian/Base.Dockerfile - BUILD_IMAGE_TAG: CommandBox + - BUILD_IMAGE_DOCKERFILE: builds/base/Base.Dockerfile + BUILD_IMAGE_TAGS: CommandBox # - BUILD_IMAGE_DOCKERFILE: builds/debian/Lucee5.Dockerfile # BUILD_IMAGE_TAG: lucee5.3.10.97 # - BUILD_IMAGE_DOCKERFILE: builds/debian/Adobe2018.Dockerfile @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up QEMU uses: docker/setup-qemu-action@master @@ -50,20 +50,20 @@ jobs: build-args: COMMANDBOX_VERSION=${{ env.COMMANDBOX_VERSION }} push: false load: true - tags: ${{ env.DOCKER_IMAGE }}:${{ matrix.BUILD_IMAGE_TAG }} + tags: ${{ env.DOCKER_IMAGE }}:${{ matrix.BUILD_IMAGE_TAGS }} - name: Scan generated packages - uses: anchore/scan-action@v6 + uses: anchore/scan-action@v7 id: securityscan with: - image: ${{ env.DOCKER_IMAGE }}:${{ matrix.BUILD_IMAGE_TAG }} + image: ${{ env.DOCKER_IMAGE }}:${{ matrix.BUILD_IMAGE_TAGS }} severity-cutoff: "high" fail-build: false by-cve: "true" only-fixed: true - name: Upload Anchore Report - uses: github/codeql-action/upload-sarif@v3 + uses: github/codeql-action/upload-sarif@v4 with: sarif_file: ${{ steps.securityscan.outputs.sarif }} category: "BoxLang-Runtime-${{ github.env.BRANCH }}" diff --git a/README.md b/README.md index 9fbb773..c8a4fe3 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ All images are published to [Docker Hub](https://hub.docker.com/r/ortussolutions - **Multi-Engine Support**: Run BoxLang Applications or CFML engines, including Lucee and Adobe ColdFusion, in a single container. - **Customizable**: Easily configure your server environment using `server.json` or environment variables. - **Pre-Built Engines**: Includes pre-built images with warmed-up engines to reduce startup times. -- **Alpine and UBI9 Variants**: Lightweight Alpine Linux and RHEL Universal Base Image (UBI9) variants for optimized performance and security. +- **Alpine and UBI9 Variants**: Lightweight Alpine Linux and RHEL Universal Base Image (UBI10) variants for optimized performance and security. - **Health Checks**: Built-in health checks to ensure your server is running smoothly. - **Docker Secrets Support**: Use Docker secrets for secure configuration management. - **Environment Variables**: Extensive support for environment variables to customize your server configuration at runtime. @@ -76,7 +76,7 @@ _Note: For references to the specific versions of CommandBox used within image v - `:boxlang` - BoxLang runtime ready (JDK 21) - `:lucee6` - Lucee 6.x warmed up (JDK 11) - `:adobe2025` - Adobe ColdFusion 2025 (JDK 21) -- `:[version]` - Specific tagged version (e.g., `:3.13.4`) +- `:[version]` - Specific tagged version (e.g., `:3.13.8`) - `:[tag]-snapshot` - Development version of tagged variations #### JDK/JRE Variants (Debian) @@ -100,11 +100,11 @@ _Note: For references to the specific versions of CommandBox used within image v #### RHEL Universal Base Image (UBI9) Variants -- `:ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/ubi9.Dockerfile)) - RHEL UBI9 (JDK 11) -- `:ubi9-jdk11` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/ubi9.JDK11.Dockerfile)) - UBI9 with JDK 11 -- `:ubi9-jre17` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/ubi9.JRE17.Dockerfile)) - UBI9 with JRE 17 -- `:ubi9-jdk17` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/ubi9.JDK17.Dockerfile)) - UBI9 with JDK 17 -- `:ubi9-jdk21` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/ubi9.JDK21.Dockerfile)) - UBI9 with JDK 21 +- `:ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/rhel.Dockerfile)) - RHEL UBI9 (JDK 11) +- `:ubi9-jdk11` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/rhel.JDK11.Dockerfile)) - UBI9 with JDK 11 +- `:ubi9-jre17` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/rhel.JRE17.Dockerfile)) - UBI9 with JRE 17 +- `:ubi9-jdk17` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/rhel.JDK17.Dockerfile)) - UBI9 with JDK 17 +- `:ubi9-jdk21` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/base/rhel.JDK21.Dockerfile)) - UBI9 with JDK 21 ### Pre-Built Engine Images (Warmed Up) @@ -114,7 +114,7 @@ These images include pre-downloaded and warmed-up engines to significantly reduc - `:boxlang` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/debian/BoxLang.Dockerfile)) - BoxLang on Debian - `:boxlang-alpine` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/alpine/BoxLang.Dockerfile)) - BoxLang on Alpine -- `:boxlang-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/BoxLang.Dockerfile)) - BoxLang on UBI9 +- `:boxlang-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/BoxLang.Dockerfile)) - BoxLang on UBI9 #### Lucee CFML Engine @@ -135,10 +135,10 @@ These images include pre-downloaded and warmed-up engines to significantly reduc **UBI9-based Lucee Images:** -- `:lucee5-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Lucee5.Dockerfile)) - Lucee 5.x on UBI9 -- `:lucee6-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Lucee6.Dockerfile)) - Lucee 6.x on UBI9 -- `:lucee-light-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/LuceeLight.Dockerfile)) - Lucee Light on UBI9 -- `:lucee5-light-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Lucee5Light.Dockerfile)) - Lucee 5.x Light on UBI9 +- `:lucee5-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Lucee5.Dockerfile)) - Lucee 5.x on UBI9 +- `:lucee6-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Lucee6.Dockerfile)) - Lucee 6.x on UBI9 +- `:lucee-light-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/LuceeLight.Dockerfile)) - Lucee Light on UBI9 +- `:lucee5-light-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Lucee5Light.Dockerfile)) - Lucee 5.x Light on UBI9 #### Adobe ColdFusion Engine @@ -160,10 +160,10 @@ These images include pre-downloaded and warmed-up engines to significantly reduc **UBI9-based Adobe Images:** -- `:adobe2018-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Adobe2018.Dockerfile)) - Adobe ColdFusion 2018 on UBI9 -- `:adobe2021-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Adobe2021.Dockerfile)) - Adobe ColdFusion 2021 on UBI9 -- `:adobe2023-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Adobe2023.Dockerfile)) - Adobe ColdFusion 2023 on UBI9 -- `:adobe2025-ubi9` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/ubi9/Adobe2025.Dockerfile)) - Adobe ColdFusion 2025 on UBI9 +- `:adobe2018-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Adobe2018.Dockerfile)) - Adobe ColdFusion 2018 on UBI9 +- `:adobe2021-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Adobe2021.Dockerfile)) - Adobe ColdFusion 2021 on UBI9 +- `:adobe2023-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Adobe2023.Dockerfile)) - Adobe ColdFusion 2023 on UBI9 +- `:adobe2025-rhel` ([Dockerfile](https://github.com/Ortus-Solutions/docker-commandbox/blob/master/builds/redhat/Adobe2025.Dockerfile)) - Adobe ColdFusion 2025 on UBI9 ### Choosing the Right Tag @@ -171,7 +171,7 @@ These images include pre-downloaded and warmed-up engines to significantly reduc - **For CFML Warmed Up Engines**: Use `:lucee6` or `:adobe2025` for the latest engines - **For production**: Use specific engine tags with your preferred base OS - **For smaller images**: Use `-alpine` variants -- **For enterprise/RHEL environments**: Use `-ubi9` variants +- **For enterprise/RHEL environments**: Use `-rhel` variants - **For development**: Use `:snapshot` for bleeding edge features _**Note**: The `:latest` tag currently uses OpenJDK11, as do most pre-built engine images. BoxLang and Adobe2025 images use JDK21. If you require specific JDK versions, use the appropriate JDK variant tags._ diff --git a/build/util/debian/install-dependencies.sh b/build/util/debian/install-dependencies.sh index c802606..48a16c0 100755 --- a/build/util/debian/install-dependencies.sh +++ b/build/util/debian/install-dependencies.sh @@ -6,6 +6,15 @@ apt-get update # Upgrade all packages apt-get -y upgrade +# TODO: Remove this manual update when the next Ubuntu version is released and test if CVEs are resolved +# Manually update specific packages with known CVE vulnerabilities to latest available versions +apt-get install -y \ + linux-libc-dev \ + libkrb5support0 \ + libkrb5-3 \ + libk5crypto3 \ + libgssapi-krb5-2 + apt-get autoremove -y apt-get install --assume-yes \ diff --git a/build/util/install-commandbox.sh b/build/util/install-commandbox.sh index 4186172..539ce5b 100755 --- a/build/util/install-commandbox.sh +++ b/build/util/install-commandbox.sh @@ -18,6 +18,9 @@ echo "$(box version) successfully installed" box uninstall --system commandbox-update-check +# Ensure we have updated versions of a couple core modules TODO: Remove this after the next commandbox release +box install --force commandbox-cfconfig,commandbox-boxlang + # Swap out binary with thin client now that everything is expanded curl https://s3.amazonaws.com/downloads.ortussolutions.com/ortussolutions/commandbox/${COMMANDBOX_VERSION}/box-thin -o ${BIN_DIR}/box diff --git a/build/util/ubi9/install-dependencies.sh b/build/util/redhat/install-dependencies.sh similarity index 100% rename from build/util/ubi9/install-dependencies.sh rename to build/util/redhat/install-dependencies.sh diff --git a/build/util/ubi9/install-filebeat.sh b/build/util/redhat/install-filebeat.sh similarity index 100% rename from build/util/ubi9/install-filebeat.sh rename to build/util/redhat/install-filebeat.sh diff --git a/builds/alpine/Adobe2018.Dockerfile b/builds/alpine/Adobe2018.Dockerfile deleted file mode 100644 index a5c8538..0000000 --- a/builds/alpine/Adobe2018.Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.JDK11.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2018.0.19+330149 - -ENV JAVA_TOOL_OPTIONS '-Djdk.serialFilter=!org.mozilla.**;!com.sun.syndication.**;!org.apache.commons.beanutils.**;!org.jgroups.**;!com.sun.rowset.**' - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/alpine/Adobe2021.Dockerfile b/builds/alpine/Adobe2021.Dockerfile deleted file mode 100644 index 3e32069..0000000 --- a/builds/alpine/Adobe2021.Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.JDK11.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2021.0.22+330451 - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/alpine/Adobe2023.Dockerfile b/builds/alpine/Adobe2023.Dockerfile index 5ad0ea4..aec4f3f 100644 --- a/builds/alpine/Adobe2023.Dockerfile +++ b/builds/alpine/Adobe2023.Dockerfile @@ -1,11 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.JDK17.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2023.0.16+330828 +ENV BOX_SERVER_APP_CFENGINE adobe@2023.0.17+330864 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/alpine/Adobe2025.Dockerfile b/builds/alpine/Adobe2025.Dockerfile index 91d07b0..cd5d14c 100644 --- a/builds/alpine/Adobe2025.Dockerfile +++ b/builds/alpine/Adobe2025.Dockerfile @@ -1,12 +1,14 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.JDK17.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2025.0.04+331512 +ENV BOX_SERVER_APP_CFENGINE adobe@2025.0.05+331552 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/alpine/Base.Dockerfile b/builds/alpine/Base.Dockerfile index 09a0e92..d629b2e 100644 --- a/builds/alpine/Base.Dockerfile +++ b/builds/alpine/Base.Dockerfile @@ -1,5 +1,6 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" \ No newline at end of file diff --git a/builds/alpine/Base.JDK8.Dockerfile b/builds/alpine/Base.JDK8.Dockerfile deleted file mode 100644 index 1b431e6..0000000 --- a/builds/alpine/Base.JDK8.Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.JDK8.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" \ No newline at end of file diff --git a/builds/alpine/BoxLang.Dockerfile b/builds/alpine/BoxLang.Dockerfile index ecc9b70..8afbf98 100644 --- a/builds/alpine/BoxLang.Dockerfile +++ b/builds/alpine/BoxLang.Dockerfile @@ -1,10 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.JDK21.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" -ENV BOX_SERVER_APP_CFENGINE boxlang@1.7.0 +ENV BOX_SERVER_APP_CFENGINE boxlang@1.8.0 RUN ${BUILD_DIR}/util/warmup-server.sh diff --git a/builds/alpine/Lucee5.Dockerfile b/builds/alpine/Lucee5.Dockerfile index 786a78e..6debeaf 100644 --- a/builds/alpine/Lucee5.Dockerfile +++ b/builds/alpine/Lucee5.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/alpine/Lucee5Light.Dockerfile b/builds/alpine/Lucee5Light.Dockerfile index 4d5aea6..9aaad91 100644 --- a/builds/alpine/Lucee5Light.Dockerfile +++ b/builds/alpine/Lucee5Light.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/alpine/Lucee6.Dockerfile b/builds/alpine/Lucee6.Dockerfile index 2a1f143..df770a3 100644 --- a/builds/alpine/Lucee6.Dockerfile +++ b/builds/alpine/Lucee6.Dockerfile @@ -1,10 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" -ENV BOX_SERVER_APP_CFENGINE lucee@6.2.1+122 +ENV BOX_SERVER_APP_CFENGINE lucee@6.2.3+35 ENV LUCEE_EXTENSIONS D062D72F-F8A2-46F0-8CBC91325B2F067B;version=6.5.2 diff --git a/builds/alpine/Lucee7.Dockerfile b/builds/alpine/Lucee7.Dockerfile new file mode 100644 index 0000000..5fb644b --- /dev/null +++ b/builds/alpine/Lucee7.Dockerfile @@ -0,0 +1,14 @@ +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +ENV BOX_SERVER_APP_CFENGINE lucee@7.0.0+395 + +ENV LUCEE_EXTENSIONS D062D72F-F8A2-46F0-8CBC91325B2F067B;version=6.5.2 + +# WARM UP THE SERVER - we skip the declaration so that the default installed Lucee server will be used +RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/alpine/LuceeLight.Dockerfile b/builds/alpine/LuceeLight.Dockerfile index f2abc89..7668b6c 100644 --- a/builds/alpine/LuceeLight.Dockerfile +++ b/builds/alpine/LuceeLight.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Alpine.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/base/Alpine.JDK8.Dockerfile b/builds/base/Alpine.JRE21.Dockerfile similarity index 89% rename from builds/base/Alpine.JDK8.Dockerfile rename to builds/base/Alpine.JRE21.Dockerfile index 1dcaa09..b09ec9d 100644 --- a/builds/base/Alpine.JDK8.Dockerfile +++ b/builds/base/Alpine.JRE21.Dockerfile @@ -1,7 +1,7 @@ -FROM eclipse-temurin:8-jdk-alpine +FROM eclipse-temurin:21-jre-alpine -ARG COMMANDBOX_VERSION ARG VERSION +ARG COMMANDBOX_VERSION LABEL version ${VERSION} LABEL maintainer "Jon Clausen " @@ -13,22 +13,20 @@ ENV LANG C.UTF-8 # Since alpine runs as a single user, we need to create a "root" direcotry ENV HOME /root -# Alpine workgroup is the same +# Alpine workgroup is root group ENV WORKGROUP root -# Flag as an alpine build +# Flag as an alpine release RUN touch /etc/alpine-release ### Directory Mappings ### + # BIN_DIR = Where the box binary goes ENV BIN_DIR /usr/bin # LIB_DIR = Where the build files go ENV LIB_DIR /usr/lib WORKDIR $BIN_DIR -# COMMANDBOX_HOME = Where CommmandBox Lives -ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox - # APP_DIR = the directory where the application runs ENV APP_DIR /app WORKDIR $APP_DIR @@ -37,14 +35,17 @@ WORKDIR $APP_DIR ENV BUILD_DIR $LIB_DIR/build WORKDIR $BUILD_DIR +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + # Copy file system COPY ./test/ ${APP_DIR}/ COPY ./build/ ${BUILD_DIR}/ - # Ensure all workgroup users have permission on the build scripts RUN chown -R nobody:${WORKGROUP} $BUILD_DIR RUN chmod -R +x $BUILD_DIR + # Basic Dependencies including binaries for PDF rendering RUN rm -rf $BUILD_DIR/util/debian RUN rm -rf $BUILD_DIR/util/ubi9 @@ -53,10 +54,14 @@ RUN $BUILD_DIR/util/alpine/install-dependencies.sh # Commandbox Installation RUN $BUILD_DIR/util/install-commandbox.sh +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + # Default Port Environment Variables ENV PORT 8080 ENV SSL_PORT 8443 + # Healthcheck environment variables ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" diff --git a/builds/base/Alpine.JRE25.Dockerfile b/builds/base/Alpine.JRE25.Dockerfile new file mode 100644 index 0000000..55e9bec --- /dev/null +++ b/builds/base/Alpine.JRE25.Dockerfile @@ -0,0 +1,75 @@ +FROM eclipse-temurin:25-jre-alpine + +ARG VERSION +ARG COMMANDBOX_VERSION + +LABEL version ${VERSION} +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +# Alpine workgroup is root group +ENV WORKGROUP root + +# Flag as an alpine release +RUN touch /etc/alpine-release + +### Directory Mappings ### + +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/lib +WORKDIR $BIN_DIR + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +# Ensure all workgroup users have permission on the build scripts +RUN chown -R nobody:${WORKGROUP} $BUILD_DIR +RUN chmod -R +x $BUILD_DIR + + +# Basic Dependencies including binaries for PDF rendering +RUN rm -rf $BUILD_DIR/util/debian +RUN rm -rf $BUILD_DIR/util/ubi9 +RUN $BUILD_DIR/util/alpine/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +WORKDIR $APP_DIR + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/JDK23.Dockerfile b/builds/base/JDK25.Dockerfile similarity index 98% rename from builds/base/JDK23.Dockerfile rename to builds/base/JDK25.Dockerfile index 3ef46f5..0ee7fec 100644 --- a/builds/base/JDK23.Dockerfile +++ b/builds/base/JDK25.Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:23-jdk-noble +FROM eclipse-temurin:25-jdk-noble ARG COMMANDBOX_VERSION LABEL maintainer "Jon Clausen " diff --git a/builds/base/JRE21.Dockerfile b/builds/base/JRE21.Dockerfile new file mode 100644 index 0000000..c25e586 --- /dev/null +++ b/builds/base/JRE21.Dockerfile @@ -0,0 +1,68 @@ +FROM eclipse-temurin:21-jre-noble +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/ubi9 +RUN ${BUILD_DIR}/util/debian/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh \ No newline at end of file diff --git a/builds/base/JDK8.Dockerfile b/builds/base/JRE24.Dockerfile similarity index 92% rename from builds/base/JDK8.Dockerfile rename to builds/base/JRE24.Dockerfile index 35b285a..06de078 100644 --- a/builds/base/JDK8.Dockerfile +++ b/builds/base/JRE24.Dockerfile @@ -1,5 +1,4 @@ -FROM eclipse-temurin:8-jdk-noble - +FROM eclipse-temurin:24-jre-noble ARG COMMANDBOX_VERSION LABEL maintainer "Jon Clausen " @@ -41,6 +40,7 @@ RUN chmod +x $BUILD_DIR/*.sh # Ensure all runwar users have permission on the build scripts RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + # Basic Dependencies RUN rm -rf $BUILD_DIR/util/alpine RUN rm -rf $BUILD_DIR/util/ubi9 @@ -49,12 +49,14 @@ RUN ${BUILD_DIR}/util/debian/install-dependencies.sh # Commandbox Installation RUN $BUILD_DIR/util/install-commandbox.sh +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + # Default Port Environment Variables ENV PORT 8080 ENV SSL_PORT 8443 - # Healthcheck environment variables ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" diff --git a/builds/base/JRE25.Dockerfile b/builds/base/JRE25.Dockerfile new file mode 100644 index 0000000..5672eb4 --- /dev/null +++ b/builds/base/JRE25.Dockerfile @@ -0,0 +1,68 @@ +FROM eclipse-temurin:25-jre-noble +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/ubi9 +RUN ${BUILD_DIR}/util/debian/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/ubi9.Dockerfile b/builds/base/rhel.Dockerfile similarity index 95% rename from builds/base/ubi9.Dockerfile rename to builds/base/rhel.Dockerfile index 94859b8..3b12107 100644 --- a/builds/base/ubi9.Dockerfile +++ b/builds/base/rhel.Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:11-jre-ubi9-minimal +FROM eclipse-temurin:11-jre-ubi10-minimal ARG COMMANDBOX_VERSION @@ -48,7 +48,7 @@ RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR RUN rm -rf $BUILD_DIR/util/alpine RUN rm -rf $BUILD_DIR/util/debian -RUN ${BUILD_DIR}/util/ubi9/install-dependencies.sh +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh # Commandbox Installation RUN $BUILD_DIR/util/install-commandbox.sh diff --git a/builds/base/ubi9.JDK21.Dockerfile b/builds/base/rhel.JDK11.Dockerfile similarity index 95% rename from builds/base/ubi9.JDK21.Dockerfile rename to builds/base/rhel.JDK11.Dockerfile index 41c8a36..68436d9 100644 --- a/builds/base/ubi9.JDK21.Dockerfile +++ b/builds/base/rhel.JDK11.Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:21-jdk-ubi9-minimal +FROM eclipse-temurin:11-jdk-ubi10-minimal ARG COMMANDBOX_VERSION @@ -48,7 +48,7 @@ RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR RUN rm -rf $BUILD_DIR/util/alpine RUN rm -rf $BUILD_DIR/util/debian -RUN ${BUILD_DIR}/util/ubi9/install-dependencies.sh +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh # Commandbox Installation RUN $BUILD_DIR/util/install-commandbox.sh diff --git a/builds/base/ubi9.JDK17.Dockerfile b/builds/base/rhel.JDK17.Dockerfile similarity index 95% rename from builds/base/ubi9.JDK17.Dockerfile rename to builds/base/rhel.JDK17.Dockerfile index f1c4142..4aed2a3 100644 --- a/builds/base/ubi9.JDK17.Dockerfile +++ b/builds/base/rhel.JDK17.Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:17-jdk-ubi9-minimal +FROM eclipse-temurin:17-jdk-ubi10-minimal ARG COMMANDBOX_VERSION @@ -48,7 +48,7 @@ RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR RUN rm -rf $BUILD_DIR/util/alpine RUN rm -rf $BUILD_DIR/util/debian -RUN ${BUILD_DIR}/util/ubi9/install-dependencies.sh +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh # Commandbox Installation RUN $BUILD_DIR/util/install-commandbox.sh diff --git a/builds/base/ubi9.JDK11.Dockerfile b/builds/base/rhel.JDK21.Dockerfile similarity index 95% rename from builds/base/ubi9.JDK11.Dockerfile rename to builds/base/rhel.JDK21.Dockerfile index 8701000..87b5110 100644 --- a/builds/base/ubi9.JDK11.Dockerfile +++ b/builds/base/rhel.JDK21.Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:11-jdk-ubi9-minimal +FROM eclipse-temurin:21-jdk-ubi10-minimal ARG COMMANDBOX_VERSION @@ -48,7 +48,7 @@ RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR RUN rm -rf $BUILD_DIR/util/alpine RUN rm -rf $BUILD_DIR/util/debian -RUN ${BUILD_DIR}/util/ubi9/install-dependencies.sh +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh # Commandbox Installation RUN $BUILD_DIR/util/install-commandbox.sh diff --git a/builds/base/rhel.JDK24.Dockerfile b/builds/base/rhel.JDK24.Dockerfile new file mode 100644 index 0000000..014c89d --- /dev/null +++ b/builds/base/rhel.JDK24.Dockerfile @@ -0,0 +1,72 @@ +FROM eclipse-temurin:24-jdk-ubi10-minimal + +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +RUN microdnf install -y shadow-utils util-linux + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/debian + +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/rhel.JDK25.Dockerfile b/builds/base/rhel.JDK25.Dockerfile new file mode 100644 index 0000000..51ebc0a --- /dev/null +++ b/builds/base/rhel.JDK25.Dockerfile @@ -0,0 +1,72 @@ +FROM eclipse-temurin:25-jdk-ubi10-minimal + +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +RUN microdnf install -y shadow-utils util-linux + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/debian + +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/rhel.JRE17.Dockerfile b/builds/base/rhel.JRE17.Dockerfile new file mode 100644 index 0000000..ff8caad --- /dev/null +++ b/builds/base/rhel.JRE17.Dockerfile @@ -0,0 +1,72 @@ +FROM eclipse-temurin:17-jre-ubi10-minimal + +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +RUN microdnf install -y shadow-utils util-linux + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/debian + +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/rhel.JRE21.Dockerfile b/builds/base/rhel.JRE21.Dockerfile new file mode 100644 index 0000000..5d9030f --- /dev/null +++ b/builds/base/rhel.JRE21.Dockerfile @@ -0,0 +1,72 @@ +FROM eclipse-temurin:21-jre-ubi10-minimal + +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +RUN microdnf install -y shadow-utils util-linux + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/debian + +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/rhel.JRE24.Dockerfile b/builds/base/rhel.JRE24.Dockerfile new file mode 100644 index 0000000..c429c5f --- /dev/null +++ b/builds/base/rhel.JRE24.Dockerfile @@ -0,0 +1,72 @@ +FROM eclipse-temurin:24-jre-ubi10-minimal + +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +RUN microdnf install -y shadow-utils util-linux + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/debian + +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/rhel.JRE25.Dockerfile b/builds/base/rhel.JRE25.Dockerfile new file mode 100644 index 0000000..a2c1ab7 --- /dev/null +++ b/builds/base/rhel.JRE25.Dockerfile @@ -0,0 +1,72 @@ +FROM eclipse-temurin:25-jre-ubi10-minimal + +ARG COMMANDBOX_VERSION + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +# Default to UTF-8 file.encoding +ENV LANG C.UTF-8 + +# Since alpine runs as a single user, we need to create a "root" direcotry +ENV HOME /root + +RUN microdnf install -y shadow-utils util-linux + +# Add a working group which any dynamic users can be assigned +ENV WORKGROUP runwar +RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root + +### Directory Mappings ### +# BIN_DIR = Where the box binary goes +ENV BIN_DIR /usr/local/bin +# LIB_DIR = Where the build files go +ENV LIB_DIR /usr/local/lib +WORKDIR $BIN_DIR + +# BUILD_DIR = WHERE runtime scripts go +ENV BUILD_DIR $LIB_DIR/build +WORKDIR $BUILD_DIR + +# COMMANDBOX_HOME = Where CommmandBox Lives +ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox + +# APP_DIR = the directory where the application runs +ENV APP_DIR /app +WORKDIR $APP_DIR + +# Copy file system +COPY ./test/ ${APP_DIR}/ +COPY ./build/ ${BUILD_DIR}/ +RUN chmod +x $BUILD_DIR/*.sh + +# Ensure all runwar users have permission on the build scripts +RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR + + +# Basic Dependencies +RUN rm -rf $BUILD_DIR/util/alpine +RUN rm -rf $BUILD_DIR/util/debian + +RUN ${BUILD_DIR}/util/redhat/install-dependencies.sh + +# Commandbox Installation +RUN $BUILD_DIR/util/install-commandbox.sh + +# Add our custom classes added in the previous step to the java classpath +ENV CLASSPATH="$JAVA_HOME/classes" + +# Default Port Environment Variables +ENV PORT 8080 +ENV SSL_PORT 8443 + + +# Healthcheck environment variables +ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" + +# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries +HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 + +EXPOSE ${PORT} ${SSL_PORT} + +CMD $BUILD_DIR/run.sh diff --git a/builds/base/ubi9.JRE17.Dockerfile b/builds/base/ubi9.JRE17.Dockerfile deleted file mode 100644 index 9caab4c..0000000 --- a/builds/base/ubi9.JRE17.Dockerfile +++ /dev/null @@ -1,72 +0,0 @@ -FROM eclipse-temurin:17-jre-ubi9-minimal - -ARG COMMANDBOX_VERSION - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -# Default to UTF-8 file.encoding -ENV LANG C.UTF-8 - -# Since alpine runs as a single user, we need to create a "root" direcotry -ENV HOME /root - -RUN microdnf install -y shadow-utils util-linux - -# Add a working group which any dynamic users can be assigned -ENV WORKGROUP runwar -RUN groupadd $WORKGROUP && usermod -a -G $WORKGROUP root - -### Directory Mappings ### -# BIN_DIR = Where the box binary goes -ENV BIN_DIR /usr/local/bin -# LIB_DIR = Where the build files go -ENV LIB_DIR /usr/local/lib -WORKDIR $BIN_DIR - -# BUILD_DIR = WHERE runtime scripts go -ENV BUILD_DIR $LIB_DIR/build -WORKDIR $BUILD_DIR - -# COMMANDBOX_HOME = Where CommmandBox Lives -ENV COMMANDBOX_HOME=$LIB_DIR/CommandBox - -# APP_DIR = the directory where the application runs -ENV APP_DIR /app -WORKDIR $APP_DIR - -# Copy file system -COPY ./test/ ${APP_DIR}/ -COPY ./build/ ${BUILD_DIR}/ -RUN chmod +x $BUILD_DIR/*.sh - -# Ensure all runwar users have permission on the build scripts -RUN chown -R $(whoami):${WORKGROUP} $BUILD_DIR - - -# Basic Dependencies -RUN rm -rf $BUILD_DIR/util/alpine -RUN rm -rf $BUILD_DIR/util/debian - -RUN ${BUILD_DIR}/util/ubi9/install-dependencies.sh - -# Commandbox Installation -RUN $BUILD_DIR/util/install-commandbox.sh - -# Add our custom classes added in the previous step to the java classpath -ENV CLASSPATH="$JAVA_HOME/classes" - -# Default Port Environment Variables -ENV PORT 8080 -ENV SSL_PORT 8443 - - -# Healthcheck environment variables -ENV HEALTHCHECK_URI "http://127.0.0.1:${PORT}/" - -# Our healthcheck interval doesn't allow dynamic intervals - Default is 20s intervals with 15 retries -HEALTHCHECK --interval=20s --timeout=30s --retries=15 CMD curl --fail ${HEALTHCHECK_URI} || exit 1 - -EXPOSE ${PORT} ${SSL_PORT} - -CMD $BUILD_DIR/run.sh diff --git a/builds/debian/Adobe11.Dockerfile b/builds/debian/Adobe11.Dockerfile deleted file mode 100644 index 701c521..0000000 --- a/builds/debian/Adobe11.Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK8.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@11.0.19+314546 - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/Adobe2018.Dockerfile b/builds/debian/Adobe2018.Dockerfile deleted file mode 100644 index 511dc5e..0000000 --- a/builds/debian/Adobe2018.Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK11.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2018.0.19+330149 - -ENV JAVA_TOOL_OPTIONS '-Djdk.serialFilter=!org.mozilla.**;!com.sun.syndication.**;!org.apache.commons.beanutils.**;!org.jgroups.**;!com.sun.rowset.**' - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/Adobe2021.Dockerfile b/builds/debian/Adobe2021.Dockerfile index 8578a8d..53d3466 100644 --- a/builds/debian/Adobe2021.Dockerfile +++ b/builds/debian/Adobe2021.Dockerfile @@ -1,11 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK11.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2021.0.22+330451 +ENV BOX_SERVER_APP_CFENGINE adobe@2021.0.23+330486 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/Adobe2023.Dockerfile b/builds/debian/Adobe2023.Dockerfile index 3b99161..aec4f3f 100644 --- a/builds/debian/Adobe2023.Dockerfile +++ b/builds/debian/Adobe2023.Dockerfile @@ -1,11 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK17.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2023.0.16+330828 +ENV BOX_SERVER_APP_CFENGINE adobe@2023.0.17+330864 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/Adobe2025.Dockerfile b/builds/debian/Adobe2025.Dockerfile index 651f0e5..cd5d14c 100644 --- a/builds/debian/Adobe2025.Dockerfile +++ b/builds/debian/Adobe2025.Dockerfile @@ -1,12 +1,14 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK17.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2025.0.04+331512 +ENV BOX_SERVER_APP_CFENGINE adobe@2025.0.05+331552 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/Base.Dockerfile b/builds/debian/Base.Dockerfile index 5a4cffb..d629b2e 100644 --- a/builds/debian/Base.Dockerfile +++ b/builds/debian/Base.Dockerfile @@ -1,5 +1,6 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" \ No newline at end of file diff --git a/builds/debian/Base.JDK8.Dockerfile b/builds/debian/Base.JDK8.Dockerfile deleted file mode 100644 index 015a352..0000000 --- a/builds/debian/Base.JDK8.Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK8.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" \ No newline at end of file diff --git a/builds/debian/BoxLang.Dockerfile b/builds/debian/BoxLang.Dockerfile index 699da97..2694f0b 100644 --- a/builds/debian/BoxLang.Dockerfile +++ b/builds/debian/BoxLang.Dockerfile @@ -1,10 +1,11 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK21.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" -ENV BOX_SERVER_APP_CFENGINE boxlang@1.7.0 +ENV BOX_SERVER_APP_CFENGINE boxlang@1.8.0 RUN ${BUILD_DIR}/util/warmup-server.sh diff --git a/builds/debian/Lucee5.Dockerfile b/builds/debian/Lucee5.Dockerfile index b151eb6..6debeaf 100644 --- a/builds/debian/Lucee5.Dockerfile +++ b/builds/debian/Lucee5.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/debian/Lucee5Light.Dockerfile b/builds/debian/Lucee5Light.Dockerfile index 5600050..9aaad91 100644 --- a/builds/debian/Lucee5Light.Dockerfile +++ b/builds/debian/Lucee5Light.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/debian/Lucee6.Dockerfile b/builds/debian/Lucee6.Dockerfile index 077e0d8..df770a3 100644 --- a/builds/debian/Lucee6.Dockerfile +++ b/builds/debian/Lucee6.Dockerfile @@ -1,10 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" -ENV BOX_SERVER_APP_CFENGINE lucee@6.2.1+122 +ENV BOX_SERVER_APP_CFENGINE lucee@6.2.3+35 ENV LUCEE_EXTENSIONS D062D72F-F8A2-46F0-8CBC91325B2F067B;version=6.5.2 diff --git a/builds/debian/Lucee7.Dockerfile b/builds/debian/Lucee7.Dockerfile new file mode 100644 index 0000000..027da14 --- /dev/null +++ b/builds/debian/Lucee7.Dockerfile @@ -0,0 +1,13 @@ +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +ENV BOX_SERVER_APP_CFENGINE lucee@7.0.0+395 + +ENV LUCEE_EXTENSIONS D062D72F-F8A2-46F0-8CBC91325B2F067B;version=6.5.2 + +# WARM UP THE SERVER - we skip the declaration so that the default installed Lucee server will be used +RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/LuceeLight.Dockerfile b/builds/debian/LuceeLight.Dockerfile index fc6dbf6..7668b6c 100644 --- a/builds/debian/LuceeLight.Dockerfile +++ b/builds/debian/LuceeLight.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/debian/Lucee4.Dockerfile b/builds/redhat/Adobe2023.Dockerfile similarity index 64% rename from builds/debian/Lucee4.Dockerfile rename to builds/redhat/Adobe2023.Dockerfile index 05d543c..bc94b38 100644 --- a/builds/debian/Lucee4.Dockerfile +++ b/builds/redhat/Adobe2023.Dockerfile @@ -1,11 +1,13 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK8.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE lucee@4.5 +ENV BOX_SERVER_APP_CFENGINE adobe@2023.0.17+330864 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/debian/Adobe2016.Dockerfile b/builds/redhat/Adobe2025.Dockerfile similarity index 64% rename from builds/debian/Adobe2016.Dockerfile rename to builds/redhat/Adobe2025.Dockerfile index 0e38f1c..cd5d14c 100644 --- a/builds/debian/Adobe2016.Dockerfile +++ b/builds/redhat/Adobe2025.Dockerfile @@ -1,11 +1,14 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/JDK8.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + #Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2016.0.17+325979 +ENV BOX_SERVER_APP_CFENGINE adobe@2025.0.05+331552 # WARM UP THE SERVER RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/ubi9/Base.Dockerfile b/builds/redhat/Base.Dockerfile similarity index 64% rename from builds/ubi9/Base.Dockerfile rename to builds/redhat/Base.Dockerfile index f73ba15..d629b2e 100644 --- a/builds/ubi9/Base.Dockerfile +++ b/builds/redhat/Base.Dockerfile @@ -1,5 +1,6 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" \ No newline at end of file diff --git a/builds/ubi9/BoxLang.Dockerfile b/builds/redhat/BoxLang.Dockerfile similarity index 59% rename from builds/ubi9/BoxLang.Dockerfile rename to builds/redhat/BoxLang.Dockerfile index 8c05871..8afbf98 100644 --- a/builds/ubi9/BoxLang.Dockerfile +++ b/builds/redhat/BoxLang.Dockerfile @@ -1,10 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.JDK21.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" -ENV BOX_SERVER_APP_CFENGINE boxlang@1.7.0 +ENV BOX_SERVER_APP_CFENGINE boxlang@1.8.0 RUN ${BUILD_DIR}/util/warmup-server.sh diff --git a/builds/ubi9/Lucee5.Dockerfile b/builds/redhat/Lucee5.Dockerfile similarity index 84% rename from builds/ubi9/Lucee5.Dockerfile rename to builds/redhat/Lucee5.Dockerfile index 4cc4614..6debeaf 100644 --- a/builds/ubi9/Lucee5.Dockerfile +++ b/builds/redhat/Lucee5.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/ubi9/Lucee5Light.Dockerfile b/builds/redhat/Lucee5Light.Dockerfile similarity index 78% rename from builds/ubi9/Lucee5Light.Dockerfile rename to builds/redhat/Lucee5Light.Dockerfile index 487e657..9aaad91 100644 --- a/builds/ubi9/Lucee5Light.Dockerfile +++ b/builds/redhat/Lucee5Light.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/ubi9/Lucee6.Dockerfile b/builds/redhat/Lucee6.Dockerfile similarity index 74% rename from builds/ubi9/Lucee6.Dockerfile rename to builds/redhat/Lucee6.Dockerfile index 0f61941..df770a3 100644 --- a/builds/ubi9/Lucee6.Dockerfile +++ b/builds/redhat/Lucee6.Dockerfile @@ -1,10 +1,12 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" -ENV BOX_SERVER_APP_CFENGINE lucee@6.2.1+122 +ENV BOX_SERVER_APP_CFENGINE lucee@6.2.3+35 ENV LUCEE_EXTENSIONS D062D72F-F8A2-46F0-8CBC91325B2F067B;version=6.5.2 diff --git a/builds/redhat/Lucee7.Dockerfile b/builds/redhat/Lucee7.Dockerfile new file mode 100644 index 0000000..5fb644b --- /dev/null +++ b/builds/redhat/Lucee7.Dockerfile @@ -0,0 +1,14 @@ +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + + +LABEL maintainer "Jon Clausen " +LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" + +ENV BOX_SERVER_APP_CFENGINE lucee@7.0.0+395 + +ENV LUCEE_EXTENSIONS D062D72F-F8A2-46F0-8CBC91325B2F067B;version=6.5.2 + +# WARM UP THE SERVER - we skip the declaration so that the default installed Lucee server will be used +RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/ubi9/LuceeLight.Dockerfile b/builds/redhat/LuceeLight.Dockerfile similarity index 78% rename from builds/ubi9/LuceeLight.Dockerfile rename to builds/redhat/LuceeLight.Dockerfile index efac8f3..7668b6c 100644 --- a/builds/ubi9/LuceeLight.Dockerfile +++ b/builds/redhat/LuceeLight.Dockerfile @@ -1,5 +1,7 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.Dockerfile +# syntax = docker/dockerfile:1 +ARG BASE_IMAGE_ARG +FROM ${BASE_IMAGE_ARG} + LABEL maintainer "Jon Clausen " LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" diff --git a/builds/ubi9/Adobe2018.Dockerfile b/builds/ubi9/Adobe2018.Dockerfile deleted file mode 100644 index 778e487..0000000 --- a/builds/ubi9/Adobe2018.Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.JDK11.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2018.0.19+330149 - -ENV JAVA_TOOL_OPTIONS '-Djdk.serialFilter=!org.mozilla.**;!com.sun.syndication.**;!org.apache.commons.beanutils.**;!org.jgroups.**;!com.sun.rowset.**' - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/ubi9/Adobe2021.Dockerfile b/builds/ubi9/Adobe2021.Dockerfile deleted file mode 100644 index 1978a1b..0000000 --- a/builds/ubi9/Adobe2021.Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.JDK11.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2021.0.22+330451 - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/ubi9/Adobe2023.Dockerfile b/builds/ubi9/Adobe2023.Dockerfile deleted file mode 100644 index e9ca8a9..0000000 --- a/builds/ubi9/Adobe2023.Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.JDK17.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2023.0.16+330828 - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/builds/ubi9/Adobe2025.Dockerfile b/builds/ubi9/Adobe2025.Dockerfile deleted file mode 100644 index 3ad79df..0000000 --- a/builds/ubi9/Adobe2025.Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -# syntax = edrevo/dockerfile-plus -INCLUDE+ builds/base/ubi9.JDK17.Dockerfile - -LABEL maintainer "Jon Clausen " -LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox" - - -#Hard Code our engine environment -ENV BOX_SERVER_APP_CFENGINE adobe@2025.0.04+331512 - -# WARM UP THE SERVER -RUN ${BUILD_DIR}/util/warmup-server.sh \ No newline at end of file diff --git a/changelog.md b/changelog.md index c7dce6f..2a2d123 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ---- +## [Unreleased] + +### Changed + +- RedHat UBI images bumped to ubi-10 +- `-ubi9` tags no changed to `-rhel` for clarity on OS. Old `-ubi9` tags will no longer will be created +- BoxLang images bumped to `v1.8.0` +- Lucee 6 images bumped to `v6.2.3+35` +- Lucee 7 images added (`v7.0.0+395`) +- Adobe Coldfusion 2025 bumped to `2025.0.05+331552` +- Adobe Coldfusion 2023 bumped to `2023.0.17+330864` +- Adobe Coldfusion 2021 bumped to `2021.0.23+330486` - now only building Ubuntu version +- Adobe 2021 Support to be removed in next version due to 11/25/2025 EOL/EOS notice + ## [6.2.1/3.13.7] @@ -16,6 +30,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Adobe Coldfusion 2023 images bumped to `2023.0.16+330828` - Adobe Coldfusion 2021 images bumped to `2021.0.20+330407` - Boxlang images bump to `v1.7.0` +- JDK/JRE 11 images bumped to version `11.0.29_7` +- JDK/JRE 17 images bumped to version `17.0.17_10` +- JDK/JRE 21 images bumped to version `21.0.9_10` +- JDK/JRE 24 images bumped to version `24.0.2_12` ## [6.2.1/3.13.6] - 2025-08-06 @@ -354,7 +372,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added [RHEL ubi9](https://catalog.redhat.com/software/containers/ubi9/ubi/615bcf606feffc5384e8452e) Builds with tags: `ubi9`, `jre-11-ubi9`, `jdk-11-ubi9`, `lucee5-ubi9`, `adobe2018-ubi9`, and `adobe2021-ubi9` +- Added [RHEL ubi9](https://catalog.redhat.com/software/containers/redhat/ubi/615bcf606feffc5384e8452e) Builds with tags: `ubi9`, `jre-11-rhel`, `jdk-11-rhel`, `lucee5-rhel`, `adobe2018-rhel`, and `adobe2021-rhel` ### Changed diff --git a/docker-compose.secret-test.yml b/docker-compose.secret-test.yml index 33f1013..82019bd 100644 --- a/docker-compose.secret-test.yml +++ b/docker-compose.secret-test.yml @@ -12,13 +12,14 @@ services: dockerfile: "./${BUILD_IMAGE_DOCKERFILE}" args : - COMMANDBOX_VERSION + - BASE_IMAGE_ARG container_name: secret-test environment: - SOME_VAR=foo - TEST_DOCKER_SECRET=<> - BOX_SERVER_CFCONFIGFILE=myConfigs.json - IMAGE_TESTING_IN_PROGRESS=true - volumes: + volumes: - ./test:/app - ./build/tests/myConfigs.json:/app/myConfigs.json - ./build:/usr/local/lib/build diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 0bdc7e1..8cab4a9 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -8,13 +8,14 @@ services: sut: environment: IMAGE_TESTING_IN_PROGRESS: "true" - build: + build: context: . dockerfile: "./${BUILD_IMAGE_DOCKERFILE}" args : - COMMANDBOX_VERSION + - BASE_IMAGE_ARG command: /root/build/test.sh #Mount our test directory ( and our build directory to make local testing easier ) - volumes: + volumes: - ./test:/app - ./build:/root/build \ No newline at end of file