forked from Intellection/passenger-exporter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
53 lines (42 loc) · 1.62 KB
/
Dockerfile
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
FROM ruby:2.4.3-alpine3.7
ARG GOLANG_VERSION="1.9.4-r0"
ARG BUILD_DEPS="go=$GOLANG_VERSION ruby-dev linux-headers curl curl-dev pcre-dev libexecinfo-dev@edge-main"
ARG RUNTIME_DEPS="tini build-base pcre git libexecinfo@edge-main"
RUN echo '@edge-main http://dl-cdn.alpinelinux.org/alpine/edge/main/' >> /etc/apk/repositories && \
apk update && \
apk upgrade && \
apk add $BUILD_DEPS && \
apk add $RUNTIME_DEPS && \
mkdir -p /opt
# Passenger
ENV PASSENGER_VERSION="5.1.12" \
PATH="/opt/passenger/bin:$PATH"
RUN curl -L "https://s3.amazonaws.com/phusion-passenger/releases/passenger-$PASSENGER_VERSION.tar.gz" | tar -xzf - -C /opt && \
mv /opt/passenger-$PASSENGER_VERSION /opt/passenger && \
passenger-config validate-install --auto && \
export EXTRA_PRE_CFLAGS='-O' EXTRA_PRE_CXXFLAGS='-O' EXTRA_LDFLAGS='-lexecinfo' && \
passenger-config compile-agent --optimize && \
passenger-config install-standalone-runtime && \
passenger-config build-native-support
# Go configuration
ENV GOROOT="/usr/lib/go" \
GOPATH="/go"
ENV PATH="$GOPATH/bin:$GOROOT/bin:$PATH"
# Go dependencies
RUN go get github.com/prometheus/promu
# Configure source path
ARG SOURCE_PATH="/go/src/github.com/Intellection/passenger-exporter"
RUN mkdir -p ${SOURCE_PATH}
# Add source files
ADD . ${SOURCE_PATH}/
WORKDIR ${SOURCE_PATH}
# Build exporter
RUN promu build && \
mv ${SOURCE_PATH}/passenger-exporter /usr/local/bin/passenger-exporter && \
rm -rf ${SOURCE_PATH}/*
# Cleanup
RUN apk del $BUILD_PACKAGES && \
rm -rf /var/cache/apk/*
USER nobody:nobody
ENTRYPOINT ["tini", "--", "passenger-exporter"]
CMD ["/bin/sh"]