Tag: 生锈

如何在基于busybox的Docker镜像中使用dynamic链接?

在我的Ubuntu机器上,我有一个http服务器Rust二进制dynamic链接到glibc(默认目标),我想把我的锈应用程序放入Docker busybox的基本映像。 将每个库复制到/usr/lib busybox中似乎都不起作用, LD_LIBRARY_PATH在运行时似乎也不起作用。 我需要在编译时通过特殊的选项吗? 这是我目前的设置: $ rustc –version rustc 1.7.0 (a5d1e7a59 2016-02-29) $ cargo –version cargo 0.8.0-nightly (28a0cbb 2016-01-17) 更新1: 构build过程和我的链接库: /$ cargo build –release /$ cd target/release /target/release$ mkdir so /target/release$ ldd my-rust-app linux-vdso.so.1 => (0x00007fffc0b97000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1f270d7000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1f26eb9000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1f26ca3000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1f268de000) […]

一旦在Docker容器内构buildRust可执行文件,我该如何获取Rust可执行文件?

我正在使用macOS机器,但是我打算在Linux机器上运行我的可执行文件。 我find了适合我需求的jimmycuadra / rust Docker镜像。 我做docker build . 与当前目录下面的Dockerfile。 FROM jimmycuadra/rust ADD my_project /my_project WORKDIR /my_project RUN cargo build –release –target=x86_64-unknown-linux-gnu 这似乎正确地build立了项目,但一旦Docker退出,没有target目录,并且没有运行容器从docker cp 。 一旦在Docker容器中构buildRust可执行文件,我该如何获取它?

优化Docker中的货运生成时间

我正在使用Rust开发API,并且正在pipe理环境,包括使用Docker的外部数据库。 每次我改变API代码,货物重build,因为Docker不会caching任何与ADD语句相关的内容,将Rust目录复制到容器中,所以它会重新下载所有的包,这是一个公平的因为我使用镍,这似乎有一大堆的依赖。 有没有办法在运行cargo build之前将这些依赖关系? 至less在这种情况下,如果依赖关系发生改变,只会安装所需的东西,类似于在本地编译货物。 这里是我目前使用的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 […]

在Docker上运行生锈:从服务器清空回复

我想在泊坞窗容器中运行一个防锈网页应用程序。 我对这两种技术都很陌生,所以我开始简单。 这里是main.rs : extern crate iron; use iron::prelude::*; use iron::status; fn main() { fn hello_world(_: &mut Request) -> IronResult<Response> { Ok(Response::with((status::Ok, "Hello World!"))) } Iron::new(hello_world).http("127.0.0.1:8080").unwrap(); } Cargo.toml [package] name = "docker" version = "0.1.0" [dependencies] iron = "*" Dockerfile (改编自本教程) FROM jimmycuadra/rust EXPOSE 8080 COPY Cargo.toml /source COPY src/main.rs /source/src/ CMD cargo run 这些是我跑的命令: […]