ブログ

Armadillo Base OS:go言語のアプリケーションをビルドして実行する(コンテナの軽量化)

at_shinya.matsumoto
2025年7月11日 18時02分

Vscodeでgo言語でアプリケーションを実行する方法を下記で紹介しました。
今回はその続きとして、ソースファイルで実行ではなくビルドして実行する方法を紹介します。
Armadillo Base OS:go言語でアプリケーションを作成する(VScode版)

ビルドするメリット

・アプリの実行速度が速くなる
・コンテナを大幅に軽量化できる

デメリットとしては実行ファイルの変更に手間が掛かる様になりますが、ソースファイルが完成している
前提であれば影響は小さいと思います。

実施手順

上記リンクのソースファイルでの実行まで開発が完了したとして進めます。

1.ビルド実行環境コンテナを作成する
2.ソースファイルをビルドする
3.ビルドして作成された実行ファイルをresoucesに移動
4.app.confの実行コマンドを変更する(任意)
5.golangを削除する
6.再度コンテナをビルド実行してArmadilloにインストール

1.ビルド実行環境コンテナを作成する

作成済みのコンテナイメージ(ここではtest_go:latest)を利用してビルド環境を作ります。
プロジェクトディレクトリを /home/atmark/vscode/test_go/ として記載しています。

コンテナイメージからコンテナを作成し、コンテナの中に入る(bashを実行)
[ATDE]$ podman run -it --rm --name=go_build \
--volume=/home/atmark/vscode/test_go/app:/go_build \
test_go:latest /bin/bash
[container]#         //実際には root@c6d9e65a4721 みたいなプロンプトです

《コマンドの解説》
 --rmオプション
  コンテナ終了後にコンテナを自動で削除するオプション
  コンテナを何度も使いたい場合は本オプションを消す事で再利用可能
  コンテナを手動で消す場合は podman rm コンテナ名 で消去可能

 --volume=/home/atmark/vscode/test_go/app:/go_build
  ATDEのプロジェクトディレクトリ下の app にコンテナの /go_build でマウントする
  =コンテナからのアクセス権限を追加

2.ソースファイルをビルドする

次にコンテナの中からappにアクセスできる事を確認し、ビルドを実行

ファイルアクセスの確認
[container]# ls /go_build/src/
hello.go

ソースファイルをビルド(srcの下に保存しておく)
[container]# go build -o /go_build/src/hello /go_build/src/hello.go

実行ファイルの確認
[container]# ls /go_build/src/
hello  hello.go

コンテナから出る(--rm有りの場合はコンテナ自動消去)
[container]# exit 

3.ビルドして作成された実行ファイルをresoucesに移動

今回はコンテナの中の/binの下に実行ファイル(hello)を移動します。
次にVScode上でファイルをドラッグして移動します。(コマンドで移動でも可)

4.app.confの実行コマンドを変更する(任意)

コンテナ起動時にビルドした実行ファイルを実行する場合、app.confのset_commandを変更します。


5.golangを削除する

実行ファイルが完成したら golang パッケージは不要となりますので、ビルド時にインストールしない様に
packages.txt から削除またはコメントアウトします。

6.再度コンテナをビルド実行してArmadilloにインストール

VScodeで Generate development(release) swu を実行し、Armadilloにインストールします。
コンテナが正しく実行されている事を確認します。

[Armadillo]# podman logs test_go
Hello World


参考までにDebianで実行した場合にgolangの有無でコンテナイメージのサイズは約650MB変わります。

golang有りのコンテナイメージ
[ATDE]$ podman images
REPOSITORY                         TAG            IMAGE ID      CREATED        SIZE
localhost/arm64v8/test_go          latest         490c9a901d78  4 minutes ago  746 MB

golang無しのコンテナイメージ
[ATDE]$ podman images
REPOSITORY                         TAG            IMAGE ID      CREATED        SIZE
localhost/arm64v8/test_go          latest         a0314edb14c2  8 minutes ago  98.8 MB


以上、go言語アプリをビルドして実行する方法となります。