Docker
公式サイトDockerとは
Dockerは、アプリケーションと、それを動かすために必要なOSのライブラリや設定をひとまとめにした「コンテナ」を作り、実行するための技術です。コンテナは開発者のパソコンでも、社内のサーバーでも、クラウドでも同じように動くため、「自分の環境では動いたのに本番では動かない」という問題を大幅に減らせます。複数のコンテナ、たとえばWebサーバー、アプリケーション、データベースをまとめて起動する仕組みも用意されており、開発環境の構築を手順書ではなく設定ファイルとして共有できます。
弊社が採用する理由
弊社では、ほぼすべての案件で開発環境をDockerで構築し、多くの案件で本番環境もコンテナとして運用しています。開発環境では、PHPやNode.js、データベース、Webサーバーの組み合わせを設定ファイルに記述し、新しく参加する開発者や引き継ぎ先が同じ環境を短時間で再現できるようにしています。AWSを使う案件では、ローカルでAWSの動作を模擬するツールもコンテナで動かし、クラウドの費用をかけずに検証しています。本番環境では、AWSのECS(Fargate)にコンテナを配置する構成を基本とし、ステージング環境と本番環境で同じイメージを使うことで、環境差による不具合を防いでいます。サーバー構築とアプリケーション開発の両方を担うフルスタックエンジニア制では、動作環境そのものをコードとして管理できるDockerが、品質と引き継ぎやすさの両面で欠かせない基盤になっています。
向いている案件
- 複数人で開発する、または引き継ぎが想定されるプロジェクトの開発環境
- 開発・ステージング・本番で同じ動作環境を保ちたいシステム
- AWSなどのクラウドにコンテナとして配置するアプリケーション
- 古いシステムの動作環境を再現して調査・保守する場合
保守・移行の観点
コンテナの土台となるベースイメージにはOSやPHP、Node.jsなどの版が含まれており、それぞれの保守期限に合わせて更新する必要があります。イメージの脆弱性を自動で検査するツールを継続的インテグレーションに組み込み、定期的に更新する運用をおすすめしています。開発環境の設定ファイルは、実際に手順どおりに環境を再現できるかを定期的に確認しないと陳腐化します。本番でコンテナを運用する場合は、ログの収集と監視、イメージの版管理と切り戻し手順を整えておくことが安定運用の鍵です。
組み合わせて使う技術
よくあるご質問
Dockerを使うと本番サーバーの構成は変わりますか?
本番でコンテナを使うかどうかは要件次第です。従来のLAMP/LEMP構成のサーバーに配置する案件でも、開発環境だけをDockerで揃えることで環境差による不具合を減らせます。
納品後、社内でも同じ開発環境を再現できますか?
はい。環境の設定ファイルと手順書を納品物に含めているため、Dockerが動くパソコンであれば同じ環境を再現できます。引き継ぎや社内での改修にも役立ちます。
関連するサービス
関連する開発ガイド
- 他社が作ったシステムの引き継ぎ・保守を依頼するときのチェックリスト前の開発会社が作ったシステムの保守を別の会社に引き継ぐときの手順を、資料・アカウント・ソースコード・環境の棚卸しから調査、リスク整理、保守範囲の合意、移行まで、確認項目の表とともに解説します。
- 納品後の保守・運用で何が必要かシステムは納品後も動かし続ける必要があります。監視、バックアップと復元テスト、OS・ミドルウェア・CMSのアップデート、ステージングでの検証、保守契約の範囲という基本を整理します。
- レンタルサーバー・VPS・クラウドの違いと選び方レンタルサーバー・VPS・クラウドの3種を、管理範囲・自由度・運用負荷の観点で比較し、中小企業のWebサイトや業務システムにどれが合うかを判断する考え方と、保守との関係を解説します。
関連用語: ステージング環境、LAMP/LEMP、フルスタックエンジニア
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開