待望
のDrupal 8のリリースを記念して
、今日は
Dockerを使用してインストールする方法を説明します。

まず、簡単に、なぜこれを行うのか、どのような利点があるのか:
- ホスティングの独立。 サイトを別のホスティングに移行する必要がある場合は、はるかに簡単になります。 実際、サイト全体は、実行場所に関係なくコンテナのセットです
- クローニング 開発やテストなどのためにサイトの新しいインスタンスを作成する必要がある場合は、コンテナを複製するだけで十分です。
- サーバー環境の互換性。 多くの場合、パッケージのバージョンの違いや異なる環境での拡張機能の欠如は、明らかなバグにつながります。 異なる環境で同じコンテナを使用すると、これを回避できます。
- 分離。 設計によるdockerの分離は、1つのサーバー上に複数のサイトまたはサイトインスタンスがある場合に役立ちます(1つのサイトの高負荷は残りに影響しません)。 やや独特ですが
- 最適なサーバー環境 。 同じnginx、php、mysql / mariadbを最適に構成する必要があることは秘密ではありません。dockerの場合、他の人があなたのバージョンに合わせて収集したdockerハブでパブリックコンテナを見つけることができます。
- スケーリング 。 各コンテナは、垂直(リソースを追加するため)と水平(ロードバランサーを介して負荷を傾斜させて分散するため)の両方にスケーリングできます。
Drupalを初めて使用する人への短いコメント:経験豊富なDrupalist(私はDrupalで6年間働いています)は、Drupalがパフォーマンスの柔軟性とアーキテクチャの美しさにお金を払わなければならないことを知っています突然です。
さあ、始めましょう。 8つにはredis / memcached(内部キャッシュの保存用)およびニス(リバースプロキシサーバーのキャッシュ用)と統合するための通常のモジュールがないため、それらなしで環境を収集し、Webサーバー(php + apache2)とデータベース(mariadb別名fork mysql)。
デモンストレーションのために、Ubuntu 14.04 x64でDigitalOceanの最小の液滴(VPS)を持ち上げます。
ルートの下のsshを介して仮想マシンに接続します。デモンストレーションを簡単にするために、デフォルトのufwファイアウォールを切り取り、その構成を回避します。
root@drupal8-docker:~
Dockerをインストールします。
root@drupal8-docker:~
すべてが正常であることを確認します。
root@drupal8-docker:~
ここでは、単一のコンテナ、単一のイメージ、Dockerのバージョンなどをまだダウンロードしていないことがわかります。 デフォルトでは、
AUFSファイルシステムが
使用されます 。これにより、Dockerはそのイメージのバージョン管理をgitとして使用できます。 つまり イメージを更新する場合、すべてをゼロからダウンロードするのではなく、新しいレイヤーのみがダウンロードされます。
さらに先に進むと、画像をダウンロードする必要があります。 絶対パスを指定しない場合、デフォルトで画像は
hub.docker.comで検索され、
公式のmariadb画像をダウンロードします。 タグ(バージョン)を指定しないため、最新のタグが使用されます。
root@drupal8-docker:~
出力では、イメージのすべてのレイヤー(バージョン)がどのようにダウンロードされるかがわかります。

次に、必要なタグを示す
Drupalの
公式画像をダウンロードします。 イメージの組み立て元である
Dockerfileによると、イメージは
Apacheを使用した
公式のphp 5.6イメージの基礎として使用され、gd、pdo、opcacheなどの追加のライブラリとphp拡張機能がインストールされます。 次に、推奨されるopcache設定がインストールされ、Drupal自体がダウンロードされます。
root@drupal8-docker:~
Dockerイメージのリストを確認します。
root@drupal8-docker:~
どちらのイメージもAPTパッケージシステムを使用してDebian Jessieで構築されているため、非常に多くの重さがあります。
これで、mariadbを使用してコンテナを起動し、キーv(--volume)を使用して、データベースデータが保存されるホストノードからマウントされたパーティションを作成するようにドッカーに指示します。新しいmariadb更新を適用するために必要になります)。 コマンドの実行に応じて、実行中のコンテナーのハッシュ(識別子)が表示されます。
root@drupal8-docker:~
次に、新しく起動されたmariadbへのリンクとDrupalを起動し、ポート80でバインドします。 リンクは、インストール中にdockerによって作成された仮想ネットワーク内のmariadbを含むコンテナーのIPを指す/ etc / hostsのエントリです。
docker run --name drupal8 --link mariadb:mysql -p 80:80 -d drupal:8.0.0
docker psを見て、両方のコンテナーが実行されていることを確認します。

ブラウザでIPアドレスに移動し、Drupalインストーラーを確認します。

インストールに問題はないはずです。データベース設定ページで、この名前のlocalhostの代わりにlocalhostの代わりにmysqlを指定する必要があるだけです。この名前のバインディングを作成しました。

やった! 新しくインストールしたDrupalをお楽しみください。
