Оптимизация сроков сборки грузов в Докере

Я разрабатываю API с помощью Rust и управляю средами, включая внешнюю базу данных с помощью Docker. Каждый раз, когда я делаю изменения в коде API, перестраиваем грузы, и поскольку Docker не кэширует ничего общего сADD Чтобы скопировать каталог Rust в контейнер, он перезагружает все пакеты, что является довольно длительным процессом, поскольку я использую Nickel, который, похоже, имеет множество зависимостей.

Есть ли способ довести эти зависимости до запускаcargo build? По крайней мере, таким образом, если зависимости меняются, он устанавливает только то, что требуется, аналогично компиляции Cargo локально.

Вот Dockerfile, который я сейчас использую:

FROM ubuntu:xenial
RUN apt-get update && apt-get install curl build-essential ca-certificates file xutils-dev nmap -y
RUN mkdir /rust
WORKDIR /rust
RUN curl https://sh.rustup.rs -s >> rustup.sh
RUN chmod 755 /rust/rustup.sh
RUN ./rustup.sh -y
ENV PATH=/root/.cargo/bin:$PATH SSL_VERSION=1.0.2h
RUN rustup default 1.11.0
RUN curl https://www.openssl.org/source/openssl-$SSL_VERSION.tar.gz -O && \
    tar -xzf openssl-$SSL_VERSION.tar.gz && \
    cd openssl-$SSL_VERSION && ./config && make depend && make install && \
    cd .. && rm -rf openssl-$SSL_VERSION*
ENV OPENSSL_LIB_DIR=/usr/local/ssl/lib \
    OPENSSL_INCLUDE_DIR=/usr/local/ssl/include \
    OPENSSL_STATIC=1
RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN cargo build
EXPOSE 20000
CMD ./target/debug/api

А вот и мой Cargo.toml

[profile.dev]
debug = true

[package]
name = "api"
version = "0.0.1"
authors = ["Vignesh Sankaran <[email protected]>"]

[dependencies]
nickel = "= 0.8.1"
mongodb = "= 0.1.6"
bson = "= 0.3.0"
uuid = { version = "= 0.3.1", features = ["v4"] }

Ответы на вопрос(0)

Ваш ответ на вопрос