DockerfileでカスタムDockerイメージを作ってみる

By | Date : 2018/08/22 | 27 views

カテゴリ : Docker Web開発 タグ: ,

こんにちはー、ニアです。

前に書いた「Dockerを始めてみよう!(インストール~コンテナ立ち上げ)」では、Dockerの公式リポジトリからイメージをダウンロードしてコンテナを立てていきました。

今回は、Dockerfileの機能を使って、カスタマイズしたDockerイメージを作っていきます。

 

 

1. Dockerfileは、こんな時に使います

Dockerの公式リポジトリにあるイメージをベースに、必要なパッケージをインストールしたり、環境変数の設定をしたりする時に、Dockerfileを作成して、そこからカスタムDockerイメージを作成することができます。

また、作成したDockerfileを共有することで、他のPC上でも同じ環境を構築することができるので、チームでの開発に便利です。

Dockerfileの中身はテキスト形式なので、gitなどで管理しやすいですよ

 

例えば、PHPのDockerイメージにMySQL用のモジュールを追加したカスタムDockerイメージをチーム内で共有すれば、あとでチームメンバーが開発環境を楽に構築できてかつ、PHPモジュールをインストールし忘れるというミスを防ぐことができます。

 

2. Dockerfileを作ってみよう

今回は、LinuxのイメージにApacheとPHPをインストールし、さらにPHPコンポーネントをいくつか追加したイメージを作っていきます。

 

Dockerfileと名付けた空のファイルを作り、テキストエディタで開きます。

私はVisual Studio CodeにDockerプラグインを入れて使ってます。Dockerfileにシンタックスハイライトがかかるので便利ですよ。

今回作成する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アプリの開発環境を作っていきたいと思います。

 

それでは、See you〜!

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください