-
Notifications
You must be signed in to change notification settings - Fork 530
/
Copy pathDockerfile.wolfi
85 lines (73 loc) · 3.05 KB
/
Dockerfile.wolfi
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
ARG GOLANG_VERSION
################################################################################
# Build stage 0
# Build the apm-server binary. The golang image version is kept
# up to date with go.mod by Makefile.
################################################################################
FROM docker.elastic.co/wolfi/go:${GOLANG_VERSION} as builder
WORKDIR /src
COPY go.mod go.sum /src/
RUN --mount=type=cache,target=/root/go/pkg/mod go mod download
COPY Makefile *.mk /src/
COPY cmd /src/cmd
COPY internal /src/internal
COPY x-pack /src/x-pack
COPY .git /src/.git
COPY script /src/script
RUN --mount=type=cache,target=/root/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
make apm-server
COPY --chmod=0644 apm-server.yml ./apm-server.yml
RUN sed -i 's/127.0.0.1:8200/0.0.0.0:8200/' apm-server.yml
RUN sed -i 's/localhost:9200/elasticsearch:9200/' apm-server.yml
################################################################################
# Build stage 1
# Copy prepared files from the previous stage and complete the image.
################################################################################
FROM cgr.dev/chainguard/static:latest@sha256:1ff7590cbc50eaaa917c34b092de0720d307f67d6d795e4f749a0b80a2e95a2c
ARG TARGETARCH
ARG BUILD_DATE
ARG VERSION
ARG VCS_REF
# Statically defined labels.
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.vendor="Elastic" \
org.label-schema.license="Elastic License" \
org.label-schema.name="apm-server" \
org.label-schema.url="https://www.elastic.co/apm" \
org.label-schema.vcs-url="github.com/elastic/apm-server" \
io.k8s.description="Elastic APM Server" \
io.k8s.display-name="Apm-Server image" \
org.opencontainers.image.licenses="Elastic License" \
org.opencontainers.image.title="Apm-Server" \
org.opencontainers.image.vendor="Elastic" \
name="apm-server" \
maintainer="infra@elastic.co" \
vendor="Elastic" \
release="1" \
url="https://www.elastic.co/apm" \
summary="apm-server" \
license="Elastic License" \
description="Elastic APM Server"
# Dynamic labels, only set in published images.
LABEL \
org.label-schema.build-date=${BUILD_DATE} \
org.label-schema.version=${VERSION} \
org.label-schema.vcs-ref=${VCS_REF} \
org.opencontainers.image.created=${BUILD_DATE} \
version=${VERSION}
ENV ELASTIC_CONTAINER "true"
# When running under Docker, we must ensure libbeat monitoring pulls cgroup
# metrics from /sys/fs/cgroup/<subsystem>/, ignoring any paths found in
# /proc/self/cgroup.
ENV LIBBEAT_MONITORING_CGROUPS_HIERARCHY_OVERRIDE=/
# Disable libbeat's strict permissions checking, which is not relevant when
# running in Docker.
ENV BEAT_STRICT_PERMS=false
COPY --chmod=0644 --chown=nonroot:nonroot licenses/ELASTIC-LICENSE-2.0.txt NOTICE.txt /licenses/
WORKDIR /usr/share/apm-server
COPY --chmod=0755 --chown=nonroot:nonroot --from=builder /src/apm-server ./apm-server
COPY --chmod=0644 --chown=nonroot:nonroot --from=builder /src/apm-server.yml ./apm-server.yml
EXPOSE 8200
ENTRYPOINT ["/usr/share/apm-server/apm-server", "--environment=container"]