こんにちはー、ニアです。
前に書いた「Dockerを始めてみよう!(インストール~コンテナ立ち上げ)」では、Dockerの公式リポジトリからイメージをダウンロードしてコンテナを立てていきました。
今回は、Dockerfileの機能を使って、カスタマイズしたDockerイメージを作っていきます。
1. Dockerfileは、こんな時に使います
Dockerの公式リポジトリにあるイメージをベースに、必要なパッケージをインストールしたり、環境変数の設定をしたりする時に、Dockerfileを作成して、そこからカスタムDockerイメージを作成することができます。
また、作成したDockerfileを共有することで、他のPC上でも同じ環境を構築することができるので、チームでの開発に便利です。
例えば、PHPのDockerイメージにMySQL用のモジュールを追加したカスタムDockerイメージをチーム内で共有すれば、あとでチームメンバーが開発環境を楽に構築できてかつ、PHPモジュールをインストールし忘れるというミスを防ぐことができます。
2. Dockerfileを作ってみよう
今回は、LinuxのイメージにApacheとPHPをインストールし、さらにPHPコンポーネントをいくつか追加したイメージを作っていきます。
Dockerfileと名付けた空のファイルを作り、テキストエディタで開きます。
今回作成するDockerfileの中身です。
Dockerfileは上から順にコマンドを実行しています。
FROMコマンドで元となるイメージ名を指定します。今回はDebian(Streachバージョンのslimパッケージ版)のLinuxイメージを指定します。
LABELコマンドは、Docxkerイメージにメタデータを設定します。ここでは、Dockerイメージの作成者として「maintainer」を設定しています。
RUNコマンドは、Linuxではshコマンドを実行します。ここでは、
- Debianのパッケージ情報の更新
- Apacheのインストール
- PHPのインストール
- PHPのコンポーネントのインストール
をまとめて行います。
ENVコマンドは、環境変数を設定します。
WORKDIRコマンドは、Dokcerコンテナ内の作業ディレクトリを設定します。
ENTRYPOINTコマンドは、Dockerコンテナを起動した時に実行するコマンドを設定します。apacheの起動コマンドを指定することで、コンテナの起動時にapacheも起動させることができます。
EXPOSEコマンドは、DokcerコンテナがListenするポート番号を指定します。ここでは80番ポート(HTTP)を指定します。
Dockerfileを作成したら、docker buildコマンドを実行して、カスタムDockerイメージの出来上がり。
早速コンテナを作ってみましょう。
作成したコンテナの中の/var/www/htmlディレクトリに、phpinfo関数を呼び出すindex.phpを作成すると、
ブラウザから「localhost/index.php」でPHPの情報が表示することができました!

3. おわりに
今回は、Dockerfileを使って自分好みにカスタマイズしたDockerイメージを作成していきました。
ところで、Dockerを使ってWebアプリの開発環境を構築する時、アプリ用コンテナやデータベース用コンテナ、キャッシュ用コンテナなど複数のコンテナを作成して連携することになるのですが、そこでDocker composeという機能を使うと、それらのコンテナを簡単に管理することができます。
次回はDocker composeを使って、何かWebアプリの開発環境を作っていきたいと思います。
[END]
コメント