たろログ2

実験的運用により、記事品質が乱高下することがあります。予めご了承ください。

2022-07-22 朝礼 5分スピーチの実施

前書き

私の勤務先では、平日の朝 9時から朝礼が始まり、持ち回りで 5分間のスピーチが行われます。

テーマは何でもいいのですが、技術的な話が望ましいとされています。

今日は私の担当だったため、 Docker の話をしました。

テーマは「Docker のビルド処理について。また、それを用いて php のアプリケーションを配布する方法について」です。

docker について

docker は、アプリケーションを動作させる基盤です。

コンテナという単位でアプリケーションを動作させます。

また、そのコンテナの実行元となるものとして、イメージというものがあり、用意されたものを利用したり、今回お話しするように自分で作成して配布したりできます。

docker の一般的な用途

docker の一般的な用途は開発環境としての利用です。

例えば php のアプリケーションだと、 docker によって提供された php の環境を利用します。

自分で OS を用意して環境を準備する場合は、作成するアプリケーションによって必要になるライブラリが異なるため、その拡張ライブラリを OS にインストールする作業が必要となります。

アプリケーションの実行用に調整した Docker イメージを配布したり、ソースコードに Dockerfile を含めたりすることによって、個々の開発者が適切な php 拡張をインストールして開発環境のセットアップを行う必要性がなくなります。

今回話すのは、ソースコードについてもこの docker イメージに焼いてしまって、単体で動作するアプリケーションとして配布する方法です。

ビルドを用いてイメージを作成し、アプリケーションを配布する方法

Dockerfile という、 docker イメージの作成方法を指示するファイルがあります。

このファイルに、ソースコードを docker イメージにコピーする処理を書き入れます。

さらに、 composer でのライブラリのインストール処理も書き入れます。

この Dockerfile を基に docker イメージをビルドすると、アプリケーションのソースコードも含まれた状態の docker イメージが作成されます。

この docker イメージを配布すると、本番環境にソースコードをダウンロードする必要もなく、セットアップ処理を行う必要もなく、 docker コンテナを動作させるワンコマンドの実行でアプリケーションが実行でき、通常の手法で用意したアプリケーション環境同様に利用 (PHP のアプリケーションであれば、ブラウザでアクセスしての操作など) ができます。

実際に使ってみて

実際に、 discord の Webhook を利用したアプリケーションを構築してみましたが、環境変数として認証情報を受け渡すだけでアプリケーションを動作させることができました。

tarohida/discord-webhook-proxy (github.com)

使ってみて便利だと思ったので、今回この話をさせていただきました。

以上です。