CentOS
laravel
docker
docker-compose
LaraDock

LaradockでCentOS7上にApacheを走らせる(Docker + Laravel)

環境

  • macOS Sierra
  • Docker 17.06.0-ce-mac18
  • Apache 2.4
  • CentOS 7.0
  • MySQL 5.5
  • Laravel 5.0

前提条件

Lardockの基本的な導入手順を踏み、docker-compose up -dコマンドでコンテナを起動する直前までの工程が終了していること
すでに起動してしまっている場合、Laradockで使用するphp-fpmのコンテナとイメージを一度削除してください。

コンテナを停止、ネットワークとともに削除するコマンドは下記のとおりです。

$ docker-compose down

イメージは削除されないので、

$ docker ls -a

で全てのイメージを表示し、laradockを導入してビルドしたイメージを削除します。

導入手順

laradockのデフォルトでは、ubuntu上にApacheを走らせるように指定されています。
laradock_apache2というイメージの元となるイメージはwebdevops/apacheのubuntu16.04ですが、このリポジトリにはcentOS7用のイメージも用意されているので、こちらを利用します。

pullするイメージを変更する

laradock/apache2配下のDockerfileを書き換え、DockerHubからpullしてくるイメージのを変更します。

-  FROM webdevops/apache:ubuntu16.04
+  FROM webdevops/apache:centos-7

設定ファイルを置く

デフォルトではubuntu上にApacheを置くための設定ファイルが読み込まれています。(vhost.conf)
これをcentOS上に置けるように変更します。

まず、centOS上にApacheを置く際の設定ファイルをつくります。(httpd.conf)

$ cd laradock/apache2

$ touch httpd.conf

httpd.confは、コンテナ内のファイルをコピーしてつくります。

$ docker cp laradock_apache2_1:/etc/httpd/conf/httpd.conf httpd.cnf

次に、Dockerfileを書き換え、コンテナ内にvhost.confではなくhttpd.confを同期するようにします。

- COPY vhost.conf /etc/apache2/sites-enabled/vhost.conf
+ COPY httpd.conf /etc/httpd/conf/httpd.conf

イメージをbuildしてコンテナを起動する

docker-compose up コマンドでlaradock/apache2/配下のDockerfileからApache2のイメージをbuildし、コンテナを起動します。

オプションに-dをつけて実行すると、コンテナをバックグラウンドで起動し(デタッチドモード)、実行したままにできます。

また、今回はApache2のみイメージをビルドするように指定します。

$ docker-compose up -d apache2

centos-7のタグがついたwebdevops/apacheのイメージと、それをもとにしたlaradock_apache2というイメージがビルドされていることを確認します。

$ docker image ls

laradock_apache2     latest              7777d9659b9e        22 hours ago        1.26GB

webdevops/apache     centos-7            b3cba1c91baa        5 days ago          323MB

laradock_apache2 コンテナ内のOSがcentosになっていることを確認します。

オプションで--rmをつけると、対象のコンテナを実行後に削除してくれます。停止しているコンテナに入ることなくバージョン確認などができるので便利です。

コンテナがデタッチドモードで起動されている場合は無視されるので、--rmオプションはなくても同じ挙動になります。

$ docker-compose run --rm apache2 cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)