Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
129 lines (112 loc) 路 4.75 KB
/
Copy pathDockerfile
File metadata and controls
129 lines (112 loc) 路 4.75 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# https://hub.docker.com/_/rust
FROM --platform=$BUILDPLATFORM rust:1.99.0-bookworm@sha256:59037199c44290f2befcdd58dcc540164763fc296950255aaefeef096a1866b0 AS wasm-builder
RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
WORKDIR /usr/src/bencher/lib
RUN cargo init --lib api_auth
RUN cargo init --lib api_checkout
RUN cargo init --lib api_organizations
RUN cargo init --lib api_projects
RUN cargo init --lib api_run
RUN cargo init --lib api_server
RUN cargo init --lib api_users
RUN cargo init --lib bencher_adapter
RUN cargo init --lib bencher_boundary
RUN cargo init --lib bencher_comment
RUN cargo init --lib bencher_config
RUN cargo init --lib bencher_context
RUN cargo init --lib bencher_endpoint
RUN cargo init --lib bencher_json
RUN cargo init --lib bencher_logger
RUN cargo init --lib bencher_noise
RUN cargo init --lib bencher_parser
RUN cargo init --lib bencher_plot
RUN cargo init --lib bencher_rank
RUN cargo init --lib bencher_rbac
RUN cargo init --lib bencher_token
COPY lib/bencher_valid bencher_valid
WORKDIR /usr/src/bencher/plus
RUN cargo init --lib api_mcp
RUN cargo init --lib api_oauth
RUN cargo init --lib api_oci
RUN cargo init --lib api_runners
RUN cargo init --lib api_specs
RUN cargo init --lib bencher_billing
RUN cargo init --lib bencher_bing_index
RUN cargo init --lib bencher_callback
RUN cargo init --lib bencher_cimd
RUN cargo init --lib bencher_egress
RUN cargo init --lib bencher_github_client
RUN cargo init --lib bencher_google_client
RUN cargo init --lib bencher_google_index
RUN cargo init --lib bencher_license
RUN cargo init --lib bencher_oci
RUN cargo init --lib bencher_oci_storage
RUN cargo init --lib bencher_output_protocol
RUN cargo init --lib bencher_otel
RUN cargo init --lib bencher_otel_provider
RUN cargo init --lib bencher_rate_limiter
RUN cargo init --lib bencher_recaptcha
RUN cargo init --lib bencher_rootfs
RUN cargo init --lib bencher_runner
RUN cargo init --lib bencher_init
WORKDIR /usr/src/bencher/tasks
RUN cargo init --bin bin_version
RUN cargo init --bin gen_installer
RUN cargo init --bin gen_pkg
RUN cargo init --bin gen_notes
RUN cargo init --bin gen_types
RUN cargo init --bin test_api
RUN cargo init --bin test_console
RUN cargo init --bin test_runner
RUN cargo init --bin runner_ops
RUN cargo init --bin update_sandbox
WORKDIR /usr/src/bencher
COPY Cargo.toml Cargo.toml
COPY Cargo.lock Cargo.lock
RUN cargo init xtask
WORKDIR /usr/src/bencher/services
RUN cargo init api
RUN cargo init cli
RUN cargo init runner
WORKDIR /usr/src/bencher/services/console
COPY services/console/build_wasm.sh build_wasm.sh
RUN chmod +x build_wasm.sh
RUN ./build_wasm.sh
# https://hub.docker.com/_/node
FROM node:24.19.0-bookworm@sha256:934240a162082fd8b8a2f90cd5114446443f1eba1c5378f6687167ca405e6584 AS builder
COPY services/api/openapi.json /usr/src/bencher/services/api/openapi.json
COPY services/cli/templates/output /usr/src/bencher/services/cli/templates/output
COPY services/runner/templates/output /usr/src/bencher/services/runner/templates/output
COPY --from=wasm-builder /usr/src/bencher/lib/bencher_valid/pkg /usr/src/bencher/lib/bencher_valid/pkg
COPY packages/ui /usr/src/bencher/packages/ui
WORKDIR /usr/src/bencher/services/console
COPY services/console/package-lock.json package-lock.json
COPY services/console/package.json package.json
RUN npm ci
COPY services/console/diagrams/output diagrams/output
COPY services/console/public public
COPY services/console/src src
COPY services/console/astro.config.mjs astro.config.mjs
COPY services/console/adapter.js adapter.js
COPY services/console/markdown.js markdown.js
COPY services/console/site.js site.js
COPY services/console/tsconfig.json tsconfig.json
COPY services/console/.env.runtime .env.runtime
RUN npm run node
# https://hub.docker.com/_/node
FROM node:24.19.0-bookworm@sha256:934240a162082fd8b8a2f90cd5114446443f1eba1c5378f6687167ca405e6584 AS packager
COPY --from=builder /usr/src/bencher/services/console/dist /usr/src/bencher/services/console/dist
COPY --from=builder /usr/src/bencher/services/console/package-lock.json /usr/src/bencher/services/console/package-lock.json
COPY --from=builder /usr/src/bencher/services/console/package.json /usr/src/bencher/services/console/package.json
WORKDIR /usr/src/bencher/services/console
# https://github.com/withastro/astro/issues/7247#issuecomment-1576200139
# https://github.com/GoogleContainerTools/distroless/blob/main/examples/nodejs/Dockerfile
RUN npm ci --omit=dev
# https://github.com/GoogleContainerTools/distroless/tree/main/nodejs
FROM gcr.io/distroless/nodejs24-debian12@sha256:61f4f4341db81820c24ce771b83d202eb6452076f58628cd536cc7d94a10978b
COPY --from=packager /usr/src/bencher/services/console /usr/src/bencher
ENV HOST=0.0.0.0
ENV PORT=3000
ENV BENCHER_API_URL=http://localhost:6610
EXPOSE 3000
CMD ["/usr/src/bencher/dist/server/entry.mjs"]