TOP

このエントリーをはてなブックマークに追加

コンテナ化



ホーム > 個人開発したことまとめ > コンテナ化

コンテナ化

新しく配属されたプロジェクトで Docker や GitLab で自動リリース機能構築(CD)など、これまで触れたことのない技術が大量にあったので、それらを使うことで少しでも早くその技術に慣れ、使いこなせるようになりたかった。



どんな仕組み?

コンテナ化構成
Go の bot を動かすイメージと python の bot を動かすイメージで分けている。


Dockerfile(python)


Dockerfile(Go)





ぶつかった壁とか学んだこととか

①コンテナサイズがでかい

最初はコンテナに go/python のファイルをそのまま配置して動かしていた。その際のコンテナサイズは以下。

ソースファイルをそのまま配置して実行する場合、その環境には Go/python など、実行に必要なものがインストールされている必要がある。しかし Go には build というコマンドがあり、コンパイルして実行ファイルを生成することが可能。この実行ファイルはそれ単体で動かすことができるため、対象の環境に Go がインストールされていなくても動かすことができる(build を実行する環境には必要)。
これを使用すれば、実行するコンテナに Go がインストールされている必要はないため、より軽量なコンテナイメージを使用することができる。また、 build 時のコマンドの指定によってクロスコンパイル可能。例えば Windows 環境で build して linux 用のバイナリファイルを生成することができる。
使用するイメージを golang:1.17 から alpine:3.15 に変更した結果、イメージのサイズは 941MB から 19.6MB に減少。