-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
58 lines (47 loc) · 1.52 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
54
55
56
57
58
# -----------------------
# Typescript > Javascript
# -----------------------
FROM node:20-alpine3.18 AS node-build
ENV WORKDIR=/home/node
COPY scripts ${WORKDIR}/scripts
WORKDIR ${WORKDIR}/scripts
RUN npm install --ignore-scripts \
&& npm start
# -------------------------------
# Build k6 binary with extensions
# -------------------------------
FROM golang:1.23-alpine AS k6-build
WORKDIR $GOPATH/src/go.k6.io/k6
RUN go install go.k6.io/xk6/cmd/[email protected] \
&& xk6 build v0.54.0 --with github.com/LeonAdato/[email protected] --output /k6
# -----------------------
# OpenTelemetry Collector
# -----------------------
FROM otel/opentelemetry-collector-contrib:0.118.0 AS otel
COPY otel-config-template.yaml /etc/otelcol/config-template.yaml
# ---
# Run
# ---
FROM grafana/k6:0.56.0
COPY --from=k6-build /k6 /usr/bin/k6
COPY --from=otel / /otel
ENV K6_STATSD_ENABLE_TAGS=true
ENV K6_STATSD_BUFFER_SIZE=100
ENV K6_STATSD_PUSH_INTERVAL=100ms
ENV K6_SUMMARY_TIME_UNIT=ms
ENV K6_SUMMARY_TREND_STATS=avg,min,med,p(95),p(99),max
ENV K6_SYSTEM_TAGS=status,method,group,check,error,scenario
ENV K6_WEB_DASHBOARD=true
ENV K6_WEB_DASHBOARD_EXPORT=report.html
ENV OTEL_METRIC_EXPORT_INTERVAL=100
ENV OTEL_TEMPLATE=/otel/etc/otelcol/config-template.yaml
ENV OTEL_CONFIG=/home/k6/config.yaml
ENV WORKDIR=/home/k6
WORKDIR ${WORKDIR}
USER root
RUN apk add --no-cache aws-cli chromium curl jq
USER k6
RUN mkdir ${WORKDIR}/scripts
COPY --from=node-build /home/node/scripts/dist ${WORKDIR}/scripts
COPY reporting ${WORKDIR}/reporting
ENTRYPOINT ["sh"]