Как установить mdbook, используя Cargo внутри контейнера Docker? - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать контейнер Docker, который включает в себя Rust и mdbook. Я попробовал несколько вариантов на

FROM rust:latest
RUN cargo install mdbook

включая указание точных версий. Например, они не работают, либо работают

RUN cargo install --git https://github.com/rust-lang-nursery/mdBook.git mdbook

и

RUN cargo install mdbook --vers "^0.1.0"

Сбой происходит, когда установка доходит до компиляции lazycell v1.2.0:

Compiling lazycell v1.2.0
error: `<core::cell::UnsafeCell<T>>::new` is not yet stable as a const fn
   --> /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/lazycell-1.2.0/src/lib.rs:233:16
    |
233 |         inner: UnsafeCell::new(None),
    |                ^^^^^^^^^^^^^^^^^^^^^
    |
    = help: in Nightly builds, add `#![feature(const_unsafe_cell_new)]` to the crate attributes to enable

1 Ответ

0 голосов
/ 31 октября 2018

Вместо использования контейнера Rust из Docker, вы можете создать свой собственный. Версия Rust по-прежнему 1.30 (как с FROM rust:latest), но по какой-то причине эта процедура исправляет все зависимости.

FROM ubuntu:latest
FROM gcc:latest

RUN apt-get update && \
    apt-get install -y curl

WORKDIR /tmp

RUN curl https://sh.rustup.rs -sSf > rustup.sh
RUN chmod 755 rustup.sh
RUN ./rustup.sh -y
RUN rm /tmp/rustup.sh

RUN ~/.cargo/bin/cargo install mdbook
...