🐳
dockerでrust環境構築してhello world
ディレクトリ構成
以降「mov」の文字の部分検索して全て任意の名前にしていただければいい感じにできると思います
←②とかの説明部分は消してください★
ymlファイル
version: "3.8"
volumes:
db-store:
services:
mov-app:←②
container_name: mov-app←(②はこっちかも?)
build: ./docker/rust
tty: true
volumes:
- ../backend:/work/backend
ports:
- 8083:8083
networks:
- mov-app-net
networks:
mov-app-net:
driver: bridge
Dockerfile
infrastructure/docker/rust/Dockerfile
# 何をベースに始めるか
FROM rust:1.52.1
# キー=バリュー
# cargoの出力ディレクトリの指定
ENV CARGO_TARGET_DIR=/tmp/target \
DEBIAN_FRONTEND=noninteractive \
LC_CTYPE=ja_JP.utf8 \
LANG=ja_JP.utf8
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y -q \
ca-certificates \
locales \
apt-transport-https\
libssl-dev \
libpq-dev \
pkg-config \
curl \
build-essential \
libdbus-1-dev \
libsqlite3-dev \
mariadb-client \
git \
wget \
&& echo "ja_JP UTF-8" > /etc/locale.gen \
&& locale-gen \
&& echo "install rust tools" \
&& rustup component add rustfmt \
&& cargo install cargo-watch cargo-make \
&& cargo install sqlx-cli --no-default-features --features mysql
WORKDIR /work/backend
rustコンテナを爆誕
ターミナルにて
docker-compose -p mov(←①) up -d
dockerのdashboardで見るとこんな感じ
※https://zenn.dev/marimoofficial/articles/644cb77510eda7 にて説明してますが同時にmysqlのコンテナも作ってますのでmov-dbというものがあります
rustプロジェクト作成
yamlファイルにて自分のローカル(コロンの左側)のvolumesは ../backend(*) に設定しましたので
infrastructureと同じ階層にてrustのプロジェクトを作成しまする
cargo new backend(cargo new以下は*と同じ名前にする)
※ちなみにbackendの中に作られるものが、でmov-appのコンテナに入っていきます
下記コマンドでbackendの中身がそんままできてるのがみれます
infrastructureにて
docker-compose -p mov exec mov-app bash
満を持してhello world
またinfrustructureに移動
そこで
docker-compose -p mov exec mov-app(dashboardでいう②のとこ) cargo watch -x run
とすると
hello worldがお目見えです
Discussion
mov
という名前にした理由は何でしょうか?