SLコマンドをコンテナビルド

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

前置き

 まず、SLコマンドとは、ターミナル画面上にSLが走るジョークプログラムです。昨今のPCでlsコマンドをslと打ち間違えても、エラーの反応結果が得られるまですごく時間がかかるわけではないので、必要性がありません。しかし、大昔のPC性能で同じように行った場合は、反応結果が得られるまで時間がかかりました。そのため、エラー処理時間を短縮されるため用意されたコマンドがslコマンドです。

 今回はコンテナ上でのC言語ビルドのやり方やビルドと実行環境のコンテナを分けて実行することで、容量を抑えたコンテナを作る方法を学ぶ上に役に立つと思い記載しました。

作成概要

 作成イメージについて以下の図に示します。本記事では実行用のコンテナを容量を少なくするため、実行環境とSLコマンドをビルドするためのコンテナを分け、容量が少ないコンテナイメージを用意します。

ビルド環境のDockerfile作成

コンテナ上コマンドテスト

 今回は、ここにアップロードされているソースファイルをビルドし、slコマンドを作成します。以下のコマンドを実行して、ベースとなるコンテナ(ubuntu:18.04)を起動し、その中でビルドできるかテストします。

docker run -it ubuntu:18.04 /bin/bash

 コンテナ内に入りましたら、ソースコードをGitHubからダウンロードするために必要な、gitコマンドをインストールし、そのコマンドを使用してソースコードのダウンロードを行い、ソースコードをビルドできるようにするフォルダに入ります。

 上記の内容を以下コマンド入力で実行します。

apt update apt install -y git
git clone https://github.com/mtoyoda/sl
cd sl

次に、makeコマンドを実行することで、ソースコードをビルドします。

makeコマンドを入力するとデフォルトのままでは、コマンドが見つからないと表示されます。

# make bash: make: command not found

この問題を解決させるために、makeコマンドをインストールします。

apt install -y make

makeコマンドインストール後、makeコマンドを実行すると次は、gccコマンドが見つからないと表示されます。

# make gcc -O -Wall -o sl sl.c -lncurses make: gcc: Command not found Makefile:15: recipe for target 'sl' failed make: *** [sl] Error 127

同じように、gccコマンドをインストールします。

apt install -y gcc

gccコマンドインストール後、makeコマンドを実行すると、今度はcurses.hライブラリが存在しないというエラーが表示されます。

# make gcc -O -Wall -o sl sl.c -lncurses sl.c:41:10: fatal error: curses.h: No such file or directory  #include <curses.h>           ^~~~~~~~~~ compilation terminated. Makefile:15: recipe for target 'sl' failed make: *** [sl] Error 1

curses.hライブラリをインストールするため、libncurses5-devを導入します。

apt install -y libncurses5-dev

導入後makeコマンドを実行するとエラーが表示されません。

# make gcc -O -Wall -o sl sl.c -lncurses

同フォルダ内にslという名のファイル名が新しくできているので、そのコマンドを以下のように実行します。

./sl

コマンド実行すると、画面にアスキーアートでSLが走ることを確認できます。

Dockerfile作成

以上の流れを一つのDockerfileにまとめると以下の通りになります。

Dockerfile

FROM ubuntu:18.04
RUN apt update
RUN apt install -y git make gcc libncurses5-dev
WORKDIR /
RUN git clone https://github.com/mtoyoda/sl
WORKDIR /sl
RUN make
RUN mv sl /usr/local/bin

以下のコマンドでビルドすると、301MBのコンテナファイルが作成されます。

docker build -t testsl .

以下のコマンドでslコマンドのテストができます。

docker run -it testsl sl

低容量コンテナ作成

 コンテナの容量が301MBでは多いためベースコンテナにビルド成果物だけ追加したコンテナを作るDockerfileファイルの内容は以下に示します。

FROM ubuntu:18.04 AS builder
RUN apt update
RUN apt install -y git make gcc libncurses5-dev
WORKDIR /
RUN git clone https://github.com/mtoyoda/sl
WORKDIR /sl
RUN make
FROM ubuntu:18.04
COPY --from=builder /sl/sl /usr/local/bin

 以下のコマンドを実行してビルドしますと、64.2MBのコンテナファイルをが作成されます

docker build -t slcmd.

作成したあとで、以下のコマンドを実行すればslコマンドのテストができます。

docker run -it slcmd sl

実行しますと以下のようなアスキーアートが画面に表示されます。

 

アバター画像
About 中島克典 15 Articles
サイオステクノロジーでインフラ関連の業務を実施。趣味で自宅でKubernetesを運用し、その環境下で自作アプリ開発運用を実施。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる