2026-07-18 04:22:14 +09:00
|
|
|
# syntax=docker/dockerfile:1.7@sha256:a57df69d0ea827fb7266491f2813635de6f17269be881f696fbfdf2d83dda33e
|
|
|
|
|
|
|
|
|
|
ARG RUST_IMAGE=docker.io/library/rust:1.97.0-bookworm@sha256:8fa55b2f3ddf97471ab6a767bfa3f37e6bad0986ba823e75fea57e2a2a5c3073
|
|
|
|
|
ARG NODE_IMAGE=docker.io/library/node:24.18.0-bookworm@sha256:5711a0d445a1af54af9589066c646df387d1831a608226f4cd694fc59e745059
|
2026-07-19 18:21:17 +09:00
|
|
|
ARG NODE_RUNTIME_IMAGE=docker.io/library/node:24.18.0-bookworm-slim@sha256:6f7b03f7c2c8e2e784dcf9295400527b9b1270fd37b7e9a7285cf83b6951452d
|
2026-07-18 04:22:14 +09:00
|
|
|
ARG CARGO_BUILD_JOBS=4
|
|
|
|
|
|
|
|
|
|
FROM ${RUST_IMAGE} AS rust-build
|
|
|
|
|
ARG CARGO_BUILD_JOBS
|
|
|
|
|
WORKDIR /workspace
|
|
|
|
|
COPY Cargo.toml Cargo.lock rust-toolchain.toml ./
|
|
|
|
|
COPY .config .config
|
|
|
|
|
COPY contracts contracts
|
|
|
|
|
COPY crates crates
|
|
|
|
|
COPY docs/api docs/api
|
|
|
|
|
RUN cargo build --release --locked --jobs ${CARGO_BUILD_JOBS} --package remora-api --package remora-worker --bins
|
|
|
|
|
|
|
|
|
|
FROM ${RUST_IMAGE} AS api
|
|
|
|
|
COPY --from=rust-build /workspace/target/release/remora-api /usr/local/bin/remora-api
|
2026-08-19 21:26:26 +09:00
|
|
|
COPY LICENSE NOTICE /usr/share/licenses/remora/
|
2026-07-18 04:22:14 +09:00
|
|
|
USER 65532:65532
|
|
|
|
|
ENTRYPOINT ["/usr/local/bin/remora-api"]
|
|
|
|
|
|
|
|
|
|
FROM ${RUST_IMAGE} AS worker
|
|
|
|
|
COPY --from=rust-build /workspace/target/release/remora-worker /usr/local/bin/remora-worker
|
2026-08-19 21:26:26 +09:00
|
|
|
COPY LICENSE NOTICE /usr/share/licenses/remora/
|
2026-07-18 04:22:14 +09:00
|
|
|
USER 65532:65532
|
|
|
|
|
ENTRYPOINT ["/usr/local/bin/remora-worker"]
|
|
|
|
|
|
|
|
|
|
FROM ${NODE_IMAGE} AS web-build
|
|
|
|
|
ENV NODE_OPTIONS=--max-old-space-size=4096
|
|
|
|
|
WORKDIR /workspace
|
|
|
|
|
RUN corepack enable
|
|
|
|
|
COPY web/package.json web/pnpm-lock.yaml web/pnpm-workspace.yaml ./
|
|
|
|
|
COPY web/tools tools
|
|
|
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
|
COPY web/index.html web/tsconfig*.json web/vite.config.ts ./
|
|
|
|
|
COPY web/public public
|
|
|
|
|
COPY web/src src
|
|
|
|
|
RUN pnpm build
|
2026-07-19 18:21:17 +09:00
|
|
|
RUN CI=true pnpm prune --prod
|
2026-07-18 04:22:14 +09:00
|
|
|
|
2026-07-19 18:21:17 +09:00
|
|
|
FROM ${NODE_RUNTIME_IMAGE} AS web
|
2026-07-18 04:22:14 +09:00
|
|
|
WORKDIR /app
|
|
|
|
|
COPY --from=web-build /workspace/dist dist
|
2026-07-19 18:21:17 +09:00
|
|
|
COPY --from=web-build /workspace/node_modules node_modules
|
2026-07-18 04:22:14 +09:00
|
|
|
COPY web/server.mjs server.mjs
|
2026-07-19 18:21:17 +09:00
|
|
|
COPY web/server server
|
2026-08-19 21:26:26 +09:00
|
|
|
COPY LICENSE NOTICE /usr/share/licenses/remora/
|
2026-07-18 04:22:14 +09:00
|
|
|
USER 65532:65532
|
|
|
|
|
ENTRYPOINT ["node", "/app/server.mjs"]
|