-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
113 lines (94 loc) · 4.37 KB
/
Dockerfile
File metadata and controls
113 lines (94 loc) · 4.37 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# syntax = docker.io/docker/dockerfile:experimental
# target: otelcol-builder
ARG GOLANG_VERSION
ARG ALPINE_VERSION
FROM docker.io/golang:${GOLANG_VERSION}-alpine${ALPINE_VERSION} AS otelcol-builder
ENV \
OUTDIR=/out \
CGO_ENABLED=0 \
GO111MODULE=on
RUN set -eux && \
apk add --no-cache \
ca-certificates \
git \
make \
&& \
mkdir -p "${OUTDIR}/usr/local/bin"
ARG OTELCOL_VERSION
ENV OTELCOL_VERSION=${OTELCOL_VERSION:-latest}
RUN set -eux && \
if [ "${OTELCOL_VERSION}" = 'latest' ]; then OTELCOL_VERSION=$(wget -O - -q https://api.github.com/repos/open-telemetry/opentelemetry-collector/releases/latest | grep '"tag_name":' | sed -E 's|.*"([^"]+)".*|\1|'); fi && \
git clone --depth 1 --branch "${OTELCOL_VERSION}" --single-branch \
https://github.com/open-telemetry/opentelemetry-collector.git "${GOPATH}/src/go.opentelemetry.io/collector"
RUN set -eux && \
go get -u -v github.com/mjibson/esc@latest github.com/google/addlicense@latest
WORKDIR ${GOPATH}/src/go.opentelemetry.io/collector
RUN set -eux && \
sed -i 's|url = git@github.com:|url = https://github.com/|' .gitmodules && \
git submodule update --init --depth 1
RUN set -eux && \
GOFLAGS='-v -tags=osusergo,netgo,static,static_build -installsuffix=netgo' make otelcol GOOS="$(go env GOOS)" GOARCH="$(go env GOARCH)" BUILD_INFO="-ldflags='-X=go.opentelemetry.io/collector/internal/version.GitHash=$(git rev-parse --short HEAD) -X=go.opentelemetry.io/collector/internal/version.BuildType=release -d -s -w '-extldflags=-static''"
RUN mv ./bin/otelcol_"$(go env GOOS)"_"$(go env GOARCH)" ${OUTDIR}/usr/local/bin/otelcol
# target: otelcontribcol-builder
ARG GOLANG_VERSION
ARG ALPINE_VERSION
FROM docker.io/golang:${GOLANG_VERSION}-alpine${ALPINE_VERSION} AS otelcontribcol-builder
ENV \
OUTDIR=/out \
CGO_ENABLED=0 \
GO111MODULE=on
RUN set -eux && \
apk add --no-cache \
ca-certificates \
git \
make \
&& \
mkdir -p "${OUTDIR}/usr/local/bin"
ARG OTELCONTRIBCOL_VERSION
ENV OTELCONTRIBCOL_VERSION=${OTELCONTRIBCOL_VERSION:-latest}
RUN set -eux && \
if [ "${OTELCONTRIBCOL_VERSION}" = 'latest' ]; then OTELCONTRIBCOL_VERSION=$(wget -O - -q https://api.github.com/repos/open-telemetry/opentelemetry-collector-contrib/releases/latest | grep '"tag_name":' | sed -E 's|.*"([^"]+)".*|\1|'); fi && \
git clone --depth 1 --branch "${OTELCONTRIBCOL_VERSION}" --single-branch \
https://github.com/open-telemetry/opentelemetry-collector-contrib.git "${GOPATH}/src/github.com/open-telemetry/opentelemetry-collector-contrib"
WORKDIR ${GOPATH}/src/github.com/open-telemetry/opentelemetry-collector-contrib
RUN set -eux && \
GOFLAGS='-v -tags=osusergo,netgo,static,static_build -installsuffix=netgo' make otelcontribcol GOOS="$(go env GOOS)" GOARCH="$(go env GOARCH)" BUILD_INFO="-ldflags='-X github.com/open-telemetry/opentelemetry-collector-contrib/internal/version.GitHash=$(git rev-parse --short HEAD) -X go.opentelemetry.io/collector/internal/version.BuildType=release -d -s -w '-extldflags=-static''"
RUN mv ./bin/otelcontribcol_"$(go env GOOS)"_"$(go env GOARCH)" ${OUTDIR}/usr/local/bin/otelcontribcol
# target: otelcol
FROM gcr.io/distroless/static:nonroot AS otelcol
COPY --from=otelcol-builder --chown=nonroot:nonroot /out/ /
COPY --from=otelcontribcol-builder --chown=nonroot:nonroot /out/ /
USER nonroot:nonroot
# 55678: OpenCensus receiver
# 55679: zPagez extension
# 14250: Jaeger gRPC
# 14267: Jaeger thrift TChannel receiver
# 14268: Jaeger thrift HTTPPort receiver
# 5775/udp: ZipkinThriftUDPPort
# 6831/udp: CompactThriftUDPPort
# 6831/udp: BinaryThriftUDPPort
# 1777/tcp: pprof extension
# 8886/tcp: prometheus metrics
# 8889/tcp: prometheus exporter metrics
# 13133/tcp: health check extension
EXPOSE 55678 55679
ENTRYPOINT ["otelcol"]
# target: otelcol-debug
FROM gcr.io/distroless/base:debug-nonroot AS otelcol-debug
COPY --from=otelcol-builder --chown=nonroot:nonroot /out/ /
COPY --from=otelcontribcol-builder --chown=nonroot:nonroot /out/ /
USER nonroot:nonroot
# 55678: OpenCensus receiver
# 55679: zPagez extension
# 14250: Jaeger gRPC
# 14267: Jaeger thrift TChannel receiver
# 14268: Jaeger thrift HTTPPort receiver
# 5775/udp: ZipkinThriftUDPPort
# 6831/udp: CompactThriftUDPPort
# 6831/udp: BinaryThriftUDPPort
# 1777/tcp: pprof extension
# 8886/tcp: prometheus metrics
# 8889/tcp: prometheus exporter metrics
# 13133/tcp: health check extension
EXPOSE 55678 55679
ENTRYPOINT ["otelcol"]