Docker で Rust が動く環境を構築する

株式会社プライムストラクチャーのエンジニアのSayaです。

今回は Docker 上で Rust が動く環境を構築してみましたのでその方法を紹介します。

検証環境

この検証は以下の環境で行いました。

macOS Mojave 10.14.5
Docker Engine 18.09.2
Docker Compose 1.23.2

ファイル構成

ファイル構成は以下のようにします。

-  src
    - main.rs
-  docker
   - rust
     - Dockerfile
   - docker-compose.yml

Rust ファイルの作成

Rust を実行するファイルを作成します。
src フォルダの中に main.rs を作成します。
中身は簡単な計算の結果を表示するものです。

[main.rs]
fn main() {
  let a = 5;
  let b = 10;
  println!("{} + {} = {}です。", a, b, a + b);
}

docker-compose ファイルの作成

docker フォルダの中に docker-compose.yml を作成します。

[docker-compose.yml]
version: "3.6"

services:
  rust:
    build: ./rust
    tty: true
    volumes:
      - ../:/src
    ports:
      - 8999:80

Dockerfile の作成

docker フォルダの中に rust フォルダを作成し、以下のような Dockerfile を作成します。
USER という環境変数が必要になるため、ENV コマンドで定義します。

[Dockerfile]
FROM rust:latest

ENV USER=userName
WORKDIR /src
RUN apt-get update

コンテナを立ち上げる

以下のコマンドを実行してコンテナを立ち上げます。

$ cd docker
$ docker-compose up -d

コンテナが立ち上がったら以下のコマンドでコンテナの中に入ります。

$ docker-compose exec rust bash

Rust ファイルを実行する

以下のコマンドを実行して、Rust のパッケージ管理ツールである Cargo の初期設定を行います。

$ cargo init

すると cargo.toml が作成されます。
これにはパッケージの情報やプロジェクトファイルの情報が入っています。

以下のコマンドで Rust ファイルを実行します。

$ cargo run

すると以下のように実行されます。

まとめ

今回は Docker で Rust が動く環境を構築する方法を紹介しました。

Cargo を使って Docker 内で Rust を実行することが出来ました。

次回以降では Rust を使って色々試してみたいと思います。