diff --git a/docker/base-images/base-admin-tools.Dockerfile b/docker/base-images/base-admin-tools.Dockerfile index 62dc9660..1e9733b4 100644 --- a/docker/base-images/base-admin-tools.Dockerfile +++ b/docker/base-images/base-admin-tools.Dockerfile @@ -1,38 +1,64 @@ -ARG BASE_IMAGE=alpine:3.22 +ARG BASE_IMAGE=registry.access.redhat.com/ubi9/ubi-minimal FROM ${BASE_IMAGE} AS builder # These are necessary to install cqlsh -RUN apk add --update --no-cache \ - python3-dev \ - musl-dev \ - libev-dev \ +RUN microdnf install -y \ + python3-devel \ gcc \ - pipx + shadow-utils \ + && microdnf clean all -RUN pipx install --global cqlsh +ENV PIPX_HOME=/opt/pipx +ENV PIPX_BIN_DIR=/usr/local/bin + +RUN python3 -m ensurepip && \ + python3 -m pip install --upgrade pip && \ + pip install pipx && \ + pipx install cqlsh FROM ${BASE_IMAGE} AS base-admin-tools -RUN apk upgrade --no-cache -RUN apk add --no-cache \ +RUN microdnf install -y \ python3 \ - libev \ ca-certificates \ tzdata \ bash \ - curl \ jq \ - yq \ - mysql-client \ - postgresql-client \ + tar \ + gzip \ + mysql \ + postgresql \ expat \ - tini + shadow-utils \ + && microdnf clean all + +RUN curl -L https://github.com/mikefarah/yq/releases/download/v4.44.1/yq_linux_amd64 -o /usr/bin/yq && \ + chmod +x /usr/bin/yq && \ + curl -Lo /usr/bin/tini https://github.com/krallin/tini/releases/download/v0.19.0/tini && \ + chmod +x /usr/bin/tini + +ARG TEMPORAL_VERSION=1.27.2 + +RUN mkdir -p /usr/local/temporal/bin && \ + curl -fsSL https://github.com/temporalio/temporal/releases/download/v${TEMPORAL_VERSION}/temporal_${TEMPORAL_VERSION}_linux_amd64.tar.gz \ + | tar -xz -C /usr/local/temporal/bin --strip-components=0 && \ + cp /usr/local/temporal/bin/temporal-sql-tool /usr/local/bin/temporal-sql-tool && \ + chmod +x /usr/local/bin/temporal-sql-tool + +ENV TEMPORAL_CLI_VERSION=0.13.0 + +RUN curl -fsSL \ + https://github.com/temporalio/cli/releases/download/v${TEMPORAL_CLI_VERSION}/temporal_cli_${TEMPORAL_CLI_VERSION}_linux_amd64.tar.gz \ + -o /tmp/temporal-cli.tar.gz && \ + tar -xzf /tmp/temporal-cli.tar.gz -C /usr/local/bin temporal && \ + chmod +x /usr/local/bin/temporal && \ + rm /tmp/temporal-cli.tar.gz -COPY --from=builder /opt/pipx/venvs/cqlsh /opt/pipx/venvs/cqlsh +COPY --from=builder /opt/pipx /opt/pipx RUN ln -s /opt/pipx/venvs/cqlsh/bin/cqlsh /usr/local/bin/cqlsh -# validate cqlsh installation +# Validate cqlsh installation RUN cqlsh --version SHELL ["/bin/bash", "-c"] diff --git a/docker/base-images/base-builder.Dockerfile b/docker/base-images/base-builder.Dockerfile index fc2b766d..56dad0cd 100644 --- a/docker/base-images/base-builder.Dockerfile +++ b/docker/base-images/base-builder.Dockerfile @@ -1,7 +1,7 @@ -FROM golang:1.24-alpine3.22 AS base-builder +FROM registry.access.redhat.com/ubi9/go-toolset:1.23 AS base-builder -RUN apk upgrade --no-cache -RUN apk add --no-cache \ - make \ - git \ - curl +USER root + +RUN dnf -y upgrade && \ + dnf -y install make git && \ + dnf clean all \ No newline at end of file diff --git a/docker/base-images/base-ci-builder.Dockerfile b/docker/base-images/base-ci-builder.Dockerfile index 422a029c..288cc2e3 100644 --- a/docker/base-images/base-ci-builder.Dockerfile +++ b/docker/base-images/base-ci-builder.Dockerfile @@ -1,10 +1,28 @@ -FROM golang:1.24-alpine3.22 AS base-ci-builder - -RUN apk upgrade --no-cache -RUN apk add --no-cache \ - make \ - git \ - protobuf \ - build-base \ - sed \ - shellcheck +FROM registry.access.redhat.com/ubi9/go-toolset:1.23 AS base-ci-builder + +USER root + +# Install what we can from UBI repos +RUN dnf -y upgrade && \ + dnf -y install \ + make \ + git \ + gcc \ + gcc-c++ \ + sed \ + unzip && \ + dnf clean all + +# Manually install shellcheck +RUN curl -sSL https://github.com/koalaman/shellcheck/releases/download/v0.9.0/shellcheck-v0.9.0.linux.x86_64.tar.xz | \ + tar -xJ && \ + cp shellcheck-v0.9.0/shellcheck /usr/local/bin/ && \ + chmod +x /usr/local/bin/shellcheck && \ + rm -rf shellcheck-v0.9.0* + +# Manually install protoc (protobuf compiler) +RUN curl -sSL https://github.com/protocolbuffers/protobuf/releases/download/v24.4/protoc-24.4-linux-x86_64.zip -o protoc.zip && \ + unzip protoc.zip -d /usr/local && \ + chmod +x /usr/local/bin/protoc && \ + rm -f protoc.zip + diff --git a/docker/base-images/base-server.Dockerfile b/docker/base-images/base-server.Dockerfile index c806dba8..24abbdce 100644 --- a/docker/base-images/base-server.Dockerfile +++ b/docker/base-images/base-server.Dockerfile @@ -1,21 +1,42 @@ -ARG BASE_IMAGE=alpine:3.22 - -FROM golang:1.24-alpine3.22 AS builder +FROM registry.access.redhat.com/ubi9/ubi-minimal AS fetcher +ARG TEMPORAL_VERSION=1.27.2 ARG DOCKERIZE_VERSION=v0.9.2 -RUN go install github.com/jwilder/dockerize@${DOCKERIZE_VERSION} -RUN cp $(which dockerize) /usr/local/bin/dockerize -##### base-server target ##### -FROM ${BASE_IMAGE} AS base-server +RUN microdnf install -y wget tar gzip ca-certificates && microdnf clean all + +RUN wget -qO- https://github.com/jwilder/dockerize/releases/download/${DOCKERIZE_VERSION}/dockerize-linux-amd64-${DOCKERIZE_VERSION}.tar.gz \ + | tar -xz -C /usr/local/bin + +RUN cd /tmp && \ + wget https://github.com/temporalio/temporal/releases/download/v${TEMPORAL_VERSION}/temporal_${TEMPORAL_VERSION}_linux_amd64.tar.gz && \ + tar -xzf temporal_${TEMPORAL_VERSION}_linux_amd64.tar.gz -C /tmp/ && \ + mv /tmp/temporal-server /usr/local/bin/temporal-server + +# Download source tarball and extract schema +RUN curl -fsSL https://github.com/temporalio/temporal/archive/refs/tags/v${TEMPORAL_VERSION}.tar.gz \ + | tar -xz --strip-components=1 -C /tmp \ + temporal-${TEMPORAL_VERSION}/schema \ + temporal-${TEMPORAL_VERSION}/config \ + temporal-${TEMPORAL_VERSION}/docker/config_template.yaml && \ + mkdir -p /etc/temporal/schema /etc/temporal/config && \ + mv /tmp/schema /etc/temporal/schema && \ + mv /tmp/config/* /etc/temporal/config/ && \ + mv /tmp/docker/config_template.yaml /etc/temporal/config/ + + +FROM registry.access.redhat.com/ubi9/ubi-minimal AS base-server + +RUN microdnf install -y tzdata ca-certificates bash gettext hostname && microdnf clean all -RUN apk upgrade --no-cache -RUN apk add --no-cache \ - ca-certificates \ - tzdata \ - bash \ - curl +COPY --from=fetcher /usr/local/bin/dockerize /usr/local/bin/ +COPY --from=fetcher /usr/local/bin/temporal-server /usr/local/bin/ +COPY --from=fetcher /etc/temporal/config /etc/temporal/config +COPY --from=fetcher /etc/temporal/schema /etc/temporal/schema -COPY --from=builder /usr/local/bin/dockerize /usr/local/bin +COPY docker/entrypoint.sh docker/start-temporal.sh docker/auto-setup.sh /etc/temporal/ +RUN chmod +x /etc/temporal/*.sh -SHELL ["/bin/bash", "-c"] +WORKDIR /etc/temporal +EXPOSE 7233 8233 9233 +ENTRYPOINT ["/etc/temporal/entrypoint.sh"]