Skip to content

Commit

Permalink
add JDK21 and Boxlang builds
Browse files Browse the repository at this point in the history
  • Loading branch information
jclausen committed Jun 26, 2024
1 parent 146ed3a commit 2ec8316
Show file tree
Hide file tree
Showing 8 changed files with 260 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ jobs:
BUILD_IMAGE_TAG: adobe2018
- BUILD_IMAGE_DOCKERFILE: builds/debian/Adobe2021.Dockerfile
BUILD_IMAGE_TAG: adobe2021
- BUILD_IMAGE_DOCKERFILE: builds/debian/BoxLang.Dockerfile
BUILD_IMAGE_TAG: boxlang

# ubi9 Builds
- BUILD_IMAGE_DOCKERFILE: builds/ubi9/Base.Dockerfile
Expand All @@ -47,6 +49,8 @@ jobs:
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

# Alpine builds
# Note: No JDK builders currently support alpine with ARM
Expand All @@ -66,6 +70,8 @@ jobs:
BUILD_IMAGE_TAG: adobe2018-alpine
- BUILD_IMAGE_DOCKERFILE: builds/alpine/Adobe2021.Dockerfile
BUILD_IMAGE_TAG: adobe2021-alpine
- BUILD_IMAGE_DOCKERFILE: builds/alpine/BoxLang.Dockerfile
BUILD_IMAGE_TAG: boxlang-alpine
steps:
- name: Checkout
uses: actions/checkout@v2
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ jobs:
BUILD_IMAGE_TAG: adobe2021
- BUILD_IMAGE_DOCKERFILE: builds/debian/Adobe2023.Dockerfile
BUILD_IMAGE_TAG: adobe2023
- BUILD_IMAGE_DOCKERFILE: builds/debian/BoxLang.Dockerfile
BUILD_IMAGE_TAG: boxlang

# ubi9 Builds
- BUILD_IMAGE_DOCKERFILE: builds/ubi9/Base.Dockerfile
Expand All @@ -62,6 +64,8 @@ jobs:
BUILD_IMAGE_TAG: adobe2021-ubi9
- BUILD_IMAGE_DOCKERFILE: builds/ubi9/Adobe2023.Dockerfile
BUILD_IMAGE_TAG: adobe2023-ubi9
- BUILD_IMAGE_DOCKERFILE: builds/ubi9/BoxLang.Dockerfile
BUILD_IMAGE_TAG: boxlang-ubi9

# Alpine builds
# Note: No JDK builders currently support alpine with ARM
Expand Down Expand Up @@ -89,6 +93,8 @@ jobs:
BUILD_IMAGE_TAG: adobe2021-alpine
- BUILD_IMAGE_DOCKERFILE: builds/alpine/Adobe2023.Dockerfile
BUILD_IMAGE_TAG: adobe2023-alpine
- BUILD_IMAGE_DOCKERFILE: builds/alpine/BoxLang.Dockerfile
BUILD_IMAGE_TAG: boxlang-alpine

steps:
- name: Checkout
Expand Down
11 changes: 11 additions & 0 deletions builds/alpine/BoxLang.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# syntax = edrevo/dockerfile-plus
INCLUDE+ builds/base/Alpine.JDK21.Dockerfile

LABEL maintainer "Jon Clausen <[email protected]>"
LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox"

RUN box install commandbox-boxlang

ENV BOX_SERVER_APP_CFENGINE boxlang

RUN ${BUILD_DIR}/util/warmup-server.sh
75 changes: 75 additions & 0 deletions builds/base/Alpine.JDK21.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
FROM eclipse-temurin:21-jdk-alpine

ARG VERSION
ARG COMMANDBOX_VERSION

LABEL version ${VERSION}
LABEL maintainer "Jon Clausen <[email protected]>"
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
68 changes: 68 additions & 0 deletions builds/base/JDK21.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
FROM eclipse-temurin:21-jdk-jammy
ARG COMMANDBOX_VERSION

LABEL maintainer "Jon Clausen <[email protected]>"
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
72 changes: 72 additions & 0 deletions builds/base/ubi9.JDK21.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
FROM eclipse-temurin:21-jdk-ubi9-minimal

ARG COMMANDBOX_VERSION

LABEL maintainer "Jon Clausen <[email protected]>"
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
11 changes: 11 additions & 0 deletions builds/debian/BoxLang.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# syntax = edrevo/dockerfile-plus
INCLUDE+ builds/base/JDK21.Dockerfile

LABEL maintainer "Jon Clausen <[email protected]>"
LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox"

RUN box install commandbox-boxlang

ENV BOX_SERVER_APP_CFENGINE boxlang

RUN ${BUILD_DIR}/util/warmup-server.sh
11 changes: 11 additions & 0 deletions builds/ubi9/BoxLang.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# syntax = edrevo/dockerfile-plus
INCLUDE+ builds/base/ubi9.JDK21.Dockerfile

LABEL maintainer "Jon Clausen <[email protected]>"
LABEL repository "https://github.com/Ortus-Solutions/docker-commandbox"

RUN box install commandbox-boxlang

ENV BOX_SERVER_APP_CFENGINE boxlang

RUN ${BUILD_DIR}/util/warmup-server.sh

0 comments on commit 2ec8316

Please sign in to comment.