# proxy-ws/Dockerfile # Stage 1: Build FROM rust:1.80-alpine AS builder WORKDIR /app # Установка зависимостей для сборки под Alpine (musl) RUN apk add --no-cache musl-dev # Кэшируем зависимости (создаем пустой проект) COPY Cargo.toml ./ RUN mkdir src && echo "fn main() {}" > src/main.rs RUN cargo build --release RUN rm -rf src # Копируем реальный код и собираем COPY src ./src # Обновляем время файла, чтобы cargo точно пересобрал RUN touch src/main.rs RUN cargo build --release # Stage 2: Runtime FROM alpine:latest WORKDIR /app # Копируем бинарник из первой стадии COPY --from=builder /app/target/release/proxy-ws ./proxy-ws # Прокси будет слушать порт 3001 EXPOSE 3001 CMD ["./proxy-ws"]