目次
Dockerfileを作成して、イメージをビルドする
Dockerfileの基本とイメージのビルド手順をメモします。
本記事で使用するファイルはこちらからダウンロード出来ます。
Dockerfile & remi-php74.repo
環境: Docker version 19.03.8、 Mac OS 10.13.6
Dockerfileとは
Dockerfileは起動するDockerコンテナの元になるイメージ(Docker image)に対して
ミドルウェアのインストールや設定などの手順をあらかじめ記述しておくレシピや雛形のようなファイルです。
Dockerfileからコマンドを使用してイメージを作成する事ができます。
(ビルドという)
作成、ビルド手順
1. Dockerfileの作成
例として、CentOSのDockerイメージを元にPHPとApacheのインストールを行います。
任意の場所にDockerfileを作成します。
Dockerfileは拡張子が無く、テキストエディタ等で「Dockerfile」という名称でファイルを作成すればOKです。
「Dockerfile」
FROM centos:centos7 # php RUN yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm COPY remi-php74.repo /etc/yum.repos.d/ RUN yum -y install php php-mbstring php-gd php-mysql php-pdo # apache RUN yum -y install httpd
ファイル内の項目について
- FROM
- 元にするDocker imageを指定する。
※イメージを持っていなかった場合でもDockerfileを実行する際に自動で取得されるようです。 - RUN
- 実行するコマンドを記述する
- COPY
- ホスト側のファイルをイメージのパスへコピーする
COPY 「ホストのファイルパス」「イメージのファイルパス」
(今回のもの以外にもDockerfile内で使用できるコマンドはあります)
Dockerfileと同じ場所にPHPのバージョン7系のインストールを有効にするためのファイル「remi-php74.repo」を作成しておきます。
「remi-php74.repo」
# This repository only provides PHP 7.4 and its extensions # NOTICE: common dependencies are in "remi-safe" [remi-php74] name=Remi's PHP 7.4 RPM repository for Enterprise Linux 7 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/7/php74/$basearch/ #mirrorlist=https://rpms.remirepo.net/enterprise/7/php74/httpsmirror mirrorlist=http://cdn.remirepo.net/enterprise/7/php74/mirror enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi (省略)
2. 作成したDockerfileからイメージをビルドする
Dockerfileの存在する場所で下記のコマンドを実行します。
$ docker build -t php-apache-image .
-tオプションでビルド後に作成するイメージの名前、
後ろにDockerfileの存在する※パスを指定します。
※Dockerfileと同じ場所で実行する場合はカレントを表す.(ピリオド)でOK
ビルドに成功したら、docker imagesコマンドでイメージが作成されている事を確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE php-apache-image latest 3b91adc04269 44 minutes ago 659MB
3. 作成したイメージからコンテナを起動する
ビルドしたイメージを元にコンテナを作成、起動
コンテナ名「php-apache-container」
$ docker run -p 8080:80 --privileged -d --name php-apache-container php-apache-image /sbin/init
コンテナの起動に成功したらログイン
$ docker exec -it php-apache-container bash
コンテナへログイン済みの状態で下記のバージョン確認コマンドを実行すると
PHPのバージョン7系とApacheが既にインストールされている事が確認できるはずです。
# php -v PHP 7.4.9 (cli) (built: Aug 4 2020 08:28:13) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
# httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Apr 2 2020 13:13:23
既存コンテナからイメージを作成する方法と比べて
設定内容やインストールされているミドルウェア等をDockerfileの内容を見れば確認出来る点が良いと思います。