diff --git a/rust/README-short.txt b/rust/README-short.txt new file mode 100644 index 000000000..ead404465 --- /dev/null +++ b/rust/README-short.txt @@ -0,0 +1 @@ +Rust is a systems programming language focused on safety, speed, and concurrency. diff --git a/rust/content.md b/rust/content.md new file mode 100644 index 000000000..12f2a0f0b --- /dev/null +++ b/rust/content.md @@ -0,0 +1,41 @@ +# What is Rust? + +Rust is a systems programming language sponsored by Mozilla Research. It is designed to be a "safe, concurrent, practical language", supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++, but is designed for better memory safety while maintaining performance. + +> [wikipedia.org/wiki/Rust_(programming_language)](https://en.wikipedia.org/wiki/Rust_%28programming_language%29) + +%%LOGO%% + +# How to use this image + +## Start a Rust instance running your app + +The most straightforward way to use this image is to use a Rust container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project: + +```dockerfile +FROM %%IMAGE%%:1.19.0 + +WORKDIR /usr/src/myapp +COPY . . + +RUN cargo install + +CMD ["myapp"] +``` + +Then, build and run the Docker image: + +```console +$ docker build -t my-rust-app . +$ docker run -it --rm --name my-running-app my-rust-app +``` + +## Compile your app inside the Docker container + +There may be occasions where it is not appropriate to run your app inside a container. To compiler, but not run your app inside the Docker instance, you can write something like: + +```console +$ docker run --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19.0 cargo build --release +``` + +This will add your current directory, as a volume, to the container, set the working directory to the volume, and run the command `cargo build --release`. This tells Cargo, Rust's build system, to compile the crate in `myapp` and output the executable to `target/release/myapp`. diff --git a/rust/github-repo b/rust/github-repo new file mode 100644 index 000000000..85a26cd9e --- /dev/null +++ b/rust/github-repo @@ -0,0 +1 @@ +https://github.com/rust-lang-nursery/docker-rust diff --git a/rust/license.md b/rust/license.md new file mode 100644 index 000000000..ae1d3964e --- /dev/null +++ b/rust/license.md @@ -0,0 +1 @@ +View [license information](https://www.rust-lang.org/en-US/legal.html) for the software contained in this image. diff --git a/rust/logo.png b/rust/logo.png new file mode 100644 index 000000000..63506dd85 Binary files /dev/null and b/rust/logo.png differ diff --git a/rust/maintainer.md b/rust/maintainer.md new file mode 100644 index 000000000..3b81776bf --- /dev/null +++ b/rust/maintainer.md @@ -0,0 +1 @@ +[the Rust Project developers](%%GITHUB-REPO%%)