-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
64 lines (48 loc) · 2.06 KB
/
Dockerfile
File metadata and controls
64 lines (48 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Java Docker container optimized with multi-stage build
# Source: http://heiber.im/post/creating-a-solid-docker-base-image/
# Build: docker build -t exoplatform/jmxtrans:latest .
# Stage 1: Builder Stage
FROM azul/zulu-openjdk-alpine:11-jre-headless-latest AS builder
LABEL maintainer="eXo Platform <docker@exoplatform.com>"
ARG JMXTRANS_VERSION=272
ENV GOSU_VERSION=1.19-go1.24.13
RUN apk add --no-cache --virtual .build-deps \
dpkg \
ca-certificates \
curl \
&& apk add --no-cache libstdc++ gcompat bash
WORKDIR /build
# Install Gosu
RUN set -ex \
&& curl -o gosu -SL "https://github.com/questdb/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture | awk -F- '{ print $NF }')" \
&& chmod +x gosu
# Install JMXTrans
RUN set -ex \
&& mkdir -p /opt/jmxtrans \
&& curl -Lo /opt/jmxtrans/jmxtrans-all.jar "https://repo.maven.apache.org/maven2/org/jmxtrans/jmxtrans/${JMXTRANS_VERSION}/jmxtrans-${JMXTRANS_VERSION}-all.jar"
# Stage 2: Final Image
FROM azul/zulu-openjdk-alpine:11-jre-headless-latest
LABEL maintainer="eXo Platform <docker@exoplatform.com>"
ENV TERM=xterm \
LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8 \
JMXTRANS_APP_DIR=/opt/jmxtrans \
JMXTRANS_JAR_FILE=jmxtrans-all.jar \
JMXTRANS_JSON_DIR=/etc/jmxtrans \
JMXTRANS_LOG_DIR=/var/log/jmxtrans \
PATH=${PATH}:/opt
RUN apk add --no-cache tini curl libstdc++ gcompat bash
WORKDIR /opt/jmxtrans
# Copy files from the builder stage
COPY --from=builder /build/gosu /usr/local/bin/gosu
COPY --from=builder /opt/jmxtrans/jmxtrans-all.jar ./jmxtrans-all.jar
COPY jmxtrans.sh ./jmxtrans.sh
COPY logback.xml ./logback.xml
COPY conf/ ${JMXTRANS_JSON_DIR}
RUN chmod +x ./jmxtrans.sh \
&& mkdir -p ${JMXTRANS_LOG_DIR} \
&& chown -R nobody:nogroup ${JMXTRANS_LOG_DIR}
ENTRYPOINT ["/sbin/tini", "--"]
HEALTHCHECK CMD curl --fail ${TARGET_INFLUXDB_URL:-"http://localhost:8086"}/ping && timeout 2 /bin/bash -c "</dev/tcp/${TARGET_JMX_HOST:-localhost}/${TARGET_JMX_PORT:-8004}" || exit 1
CMD ["/opt/jmxtrans/jmxtrans.sh", "start", "/etc/jmxtrans"]