pmunin commented on PR #565:
URL: https://github.com/apache/pulsar-manager/pull/565#issuecomment-2538783793
for those who are interested in using master version of the image, but does
not want too much hassle with local build, here is the workaround:
docker-compose.yaml:
```yaml
pulsar:
...
pulsar-manager:
build:
context: https://github.com/apache/pulsar-manager.git#master
dockerfile: ${PWD}/pulsar-manager.Dockerfile
ports:
- "9527:9527"
- "7750:7750"
depends_on:
pulsar:
condition: service_healthy
environment:
SPRING_CONFIGURATION_FILE:
/pulsar-manager/custom-config/application.properties
volumes:
- ./custom-config:/pulsar-manager/custom-config
```
In your project folder (where you run `docker compose up -d`) you create a
pulsar-manager.Dockerfile:
```Dockerfile
# # Stage 1: Build the application
FROM openjdk:8-jdk AS builder
# Install build tools including Node.js for front-end build
RUN apt-get update && \
apt-get install -y git curl && \
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
apt-get install -y nodejs && \
npm install -g yarn
WORKDIR /pulsar-manager
COPY . .
# ENV NODE_OPTIONS=--openssl-legacy-provider
RUN cd front-end && npm install && npm run build:prod
# # Build the backend
RUN set -eux; apt-get update; apt-get install -y --no-install-recommends
ca-certificates curl netbase wget ; rm -rf /var/lib/apt/lists/*
RUN set -ex; if ! command -v gpg > /dev/null; then apt-get update; apt-get
install -y --no-install-recommends gnupg dirmngr ; rm -rf /var/lib/apt/lists/*;
fi
RUN set -eux; apt-get update; apt-get install -y --no-install-recommends
bzip2 unzip xz-utils fontconfig libfreetype6 ca-certificates p11-kit ; rm -rf
/var/lib/apt/lists/*
ENV JAVA_HOME=/usr/local/openjdk-8
RUN { echo '#/bin/sh'; echo 'echo "$JAVA_HOME"'; } >
/usr/local/bin/docker-java-home && chmod +x /usr/local/bin/docker-java-home &&
[ "$JAVA_HOME" = "$(docker-java-home)" ] # backwards compatibility
ENV
PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LANG=C.UTF-8
ENV JAVA_VERSION=8u342
RUN set -eux; arch="$(dpkg --print-architecture)"; case "$arch" in 'amd64')
downloadUrl='https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jre_x64_linux_8u342b07.tar.gz';
;; 'arm64')
downloadUrl='https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u342-b07/OpenJDK8U-jre_aarch64_linux_8u342b07.tar.gz';
;; *) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; esac;
wget --progress=dot:giga -O openjdk.tgz "$downloadUrl"; wget
--progress=dot:giga -O openjdk.tgz.asc "$downloadUrl.sign"; export
GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver keyserver.ubuntu.com
--recv-keys EAC843EBD3EFDB98CC772FADA5CD6035332FA671; gpg --batch --keyserver
keyserver.ubuntu.com --keyserver-options no-self-sigs-only --recv-keys
CA5F11C6CE22644D42C6AC4492EF8D39DC13168F; gpg --batch --list-sigs
--keyid-format 0xLONG CA5F11C6CE22644D42C6AC4492EF8D39DC13168F | tee
/dev/stderr | grep '0xA5CD6035332FA671' | grep 'Andrew
Haley'; gpg --batch --verify openjdk.tgz.asc openjdk.tgz; gpgconf --kill all;
rm -rf "$GNUPGHOME"; mkdir -p "$JAVA_HOME"; tar --extract --file openjdk.tgz
--directory "$JAVA_HOME" --strip-components 1 --no-same-owner ; rm
openjdk.tgz*; { echo '#!/usr/bin/env bash'; echo 'set -Eeuo pipefail'; echo
'trust extract --overwrite --format=java-cacerts --filter=ca-anchors
--purpose=server-auth "$JAVA_HOME/lib/security/cacerts"'; } >
/etc/ca-certificates/update.d/docker-openjdk; chmod +x
/etc/ca-certificates/update.d/docker-openjdk;
/etc/ca-certificates/update.d/docker-openjdk; find "$JAVA_HOME/lib" -name
'*.so' -exec dirname '{}' ';' | sort -u >
/etc/ld.so.conf.d/docker-openjdk.conf; ldconfig; java -version
RUN ./gradlew build -x test
# ================================ Mostly original
https://github.com/apache/pulsar-manager/blob/master/docker/Dockerfile
================================
FROM eclipse-temurin:17-jre-jammy
COPY --from=builder /pulsar-manager /pulsar-manager
# ARG BUILD_DATE
# ARG VCS_REF
# ARG VERSION
# LABEL org.label-schema.build-date=$BUILD_DATE \
# org.label-schema.name="Apache Pulsar Manager" \
# org.label-schema.description="An Apache Pulsar Manager for
management Pulsar clusters" \
# org.label-schema.url="https://github.com/apache/pulsar-manager" \
# org.label-schema.vcs-ref=$VCS_REF \
# org.label-schema.vcs-url="https://github.com/apache/pulsar-manager" \
# org.label-schema.vendor="Apache Software Foundation" \
# org.label-schema.version=$VERSION \
# org.label-schema.schema-version="1.0"
RUN apt-get update
RUN apt-get install --yes nginx supervisor postgresql \
&& rm -rf /tmp/* \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /run/nginx
WORKDIR /pulsar-manager
RUN ls -Al /pulsar-manager/build/distributions/pulsar-manager.tar
COPY --from=builder /pulsar-manager/build/distributions/pulsar-manager.tar .
RUN tar -xf pulsar-manager.tar
RUN rm -r pulsar-manager.tar
COPY docker/supervisord.conf /etc/
COPY docker/supervisord-token.conf /etc/
COPY docker/supervisord-private-key.conf /etc/
COPY docker/supervisord-secret-key.conf /etc/
COPY docker/supervisord-configuration-file.conf /etc/
COPY docker/default.conf /etc/nginx/conf.d/
COPY docker/startup.sh /pulsar-manager/
COPY docker/init_db.sql /pulsar-manager/
COPY docker/entrypoint.sh /pulsar-manager/
COPY --from=builder /pulsar-manager/front-end/dist /usr/share/nginx/html/
ENTRYPOINT [ "/pulsar-manager/entrypoint.sh" ]
```
And in your project folder you also create a
`custom-config/application.properties` templating it from
[src/main/resources/application.properties](https://github.com/apache/pulsar-manager/blob/master/src/main/resources/application.properties)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]