mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-28 09:54:33 +00:00
f1c45d988e
collab: Remove dependency on X11 I'm not sure if this is the best solution (perhaps pulling `LanguageName` into a separate `language_types` crate would be better...?) - but it massively reduces build time / dependencies / size and means that the collab server no longer requires X11 libraries to be installed. tl;dr: `telemetry_events` requires the `language` crate, and the language crate requires a whole ton of extra stuff. Since telemetry_events only uses `language` for a single type definition (`LanguageName`, aka `String`), we can cut all of these out by using the base `String` type (This doesn't seem too terrible, given that all other telemetry fields are using basic datatypes like String as opposed to more strongly-typed variants). FYI the dependency tree for "why does collab need X11 libraries??" looks like this: ``` collab \- telemetry_events \- language |- gpui |- fuzzy | \- gpui |- git | \- gpui |- lsp | |- gpui | \- release_channel | \- gpui |- settings | |- fs | | \- gpui | \- gpui |- task | \- gpui \- theme \- gpui ``` Release Notes: - N/A
41 lines
1.3 KiB
Text
41 lines
1.3 KiB
Text
# syntax = docker/dockerfile:1.2
|
|
|
|
FROM rust:1.81-bookworm as builder
|
|
WORKDIR app
|
|
COPY . .
|
|
|
|
# Replace the Cargo configuration with the one used by collab.
|
|
COPY ./.cargo/collab-config.toml ./.cargo/config.toml
|
|
|
|
# Compile collab server
|
|
ARG CARGO_PROFILE_RELEASE_PANIC=abort
|
|
ARG GITHUB_SHA
|
|
|
|
ENV GITHUB_SHA=$GITHUB_SHA
|
|
|
|
# Also add `cmake`, since we need it to build `wasmtime`.
|
|
RUN apt-get update; \
|
|
apt-get install -y --no-install-recommends cmake
|
|
|
|
RUN --mount=type=cache,target=./script/node_modules \
|
|
--mount=type=cache,target=/usr/local/cargo/registry \
|
|
--mount=type=cache,target=/usr/local/cargo/git \
|
|
--mount=type=cache,target=./target \
|
|
cargo build --release --package collab --bin collab
|
|
|
|
# Copy collab server binary out of cached directory
|
|
RUN --mount=type=cache,target=./target \
|
|
cp /app/target/release/collab /app/collab
|
|
|
|
# Copy collab server binary to the runtime image
|
|
FROM debian:bookworm-slim as runtime
|
|
RUN apt-get update; \
|
|
apt-get install -y --no-install-recommends libcurl4-openssl-dev ca-certificates \
|
|
linux-perf binutils
|
|
WORKDIR app
|
|
COPY --from=builder /app/collab /app/collab
|
|
COPY --from=builder /app/crates/collab/migrations /app/migrations
|
|
COPY --from=builder /app/crates/collab/migrations_llm /app/migrations_llm
|
|
ENV MIGRATIONS_PATH=/app/migrations
|
|
ENV LLM_DATABASE_MIGRATIONS_PATH=/app/migrations_llm
|
|
ENTRYPOINT ["/app/collab"]
|