機能しているサーバーを展開してスピンアップすることは、Web ベースのアプリケーションをユーザーに配布するための鍵です。 Apache HTTP Server Project は長い間これを可能にしてきました。ただし、Apache Serverの人気にもかかわらず、ユーザーは構成と展開に関していくつかのハードルに直面する可能性があります。
ありがたいことに、ApacheコンテナとDockerコンテナは連携してこのプロセスを合理化できるため、複雑さを軽減しながら時間を節約できます。 アプリケーションのコードと構成を 1 つのクロスプラットフォーム単位にまとめてパッケージ化できます。 Apache httpd Docker Official Image は、ブラウザ、OS、CPU アーキテクチャで動作するウェブサーバーアプリケーションをコンテナ化するのに役立ちます。
このガイドでは、Apache HTTP Server (httpd)、httpd Docker Official Image、およびそれぞれの使用方法について説明します。 また、いくつかの簡単なヒントとベストプラクティスについても学びます。 慣れ親しんでいる場合は、Apacheの紹介をスキップしてもかまいませんが、フォローすることで何か新しいことを学ぶことを願っています。 飛び込みましょう。
このチュートリアルの内容:
- アパッチサーバーとは何ですか?
- httpd Docker 公式イメージの使い方
- イメージで Dockerfile を使用する方法
- ドッカーファイルなしでイメージを使用する方法
- 構成と役立つヒント
- SSLを介してデータ暗号化のロックを解除する方法
- 最初のhttpdドッカーの公式イメージをプルする
アパッチサーバーとは何ですか?
Apache HTTP Server は、「商用グレードで、機能豊富で、自由に利用できる HTTP (Web) サーバーのソースコード実装」 として作成されました 。 基本的なアプリケーションにも、堅牢なエンタープライズの代替手段にも同様に適しています。
他のサーバーと同様に、Apacheを使用すると、開発者はバックエンドリソースを保存およびアクセスして、最終的にユーザー向けのコンテンツを提供できます。 HTTP Web 要求は、この双方向通信の中心です。 「httpd」の頭字語の「d」部分は「デーモン」を表します。 このデーモンは、着信接続要求を処理し、サーバーにルーティングします。
開発者はまた、認証、キャッシュ、SSL などを追加できるApacheのモジュール性を活用します。 Apache HTTP Server に対するこの初期の拡張性の更新は、その継続的な成長のきっかけとなりました。 Apache HTTP Server は一連の NCSA パッチとして始まったので、その名前は「パッチのある Web サーバー」としての初期の存在をふざけて受け入れています。
いくつかのApache HTTPサーバーの楽しい事実:
- Apacheは1995年にデビューし、現在も広く使用されています。
- これは NCSA httpd v1.3 をモデルにしています。
- Apacheは現在、既知のWebサーバーを持つ すべてのサイトの約47% にサービスを提供しています
Httpd 対 その他のサーバー テクノロジ
Apache HTTP Server の使用経験があり、アプリケーションをコンテナ化しようとしている場合は、 Apache httpd Docker Official Image が出発点として適しています。 ユースケースに応じて、 NGINX Server、 PHP、または Apache Tomcat を確認することもできます。
注意点として、HTTP Server は Apache Tomcat (Apache Server の別の技術) とは異なります。 Apache HTTP Server は C で書かれていますが、Tomcat は Java ベースです。 Tomcat は、Java コードの実行専用の Java サーブレットです。 また、開発者がJavaServerページを介してアプリケーションページを作成するのにも役立ちます。
httpd Docker Official Image とは何ですか?
私たちは httpd Docker Official Image を Docker コミュニティと並行して維持しています。 開発者はhttpdを使用して、コンテナ化されたApache Webサーバーアプリケーションをすばやく簡単に起動できます。 httpd には Apache HTTP Server のデフォルト設定が含まれています。
なぜApache httpd Docker Official Imageを使うのですか? 主な使用例をいくつか紹介します。
- 前述のように、静的なWebページをユーザーに提供するためのHTMLサーバーの作成
- Apacheのモジュールを使用して、SSLを介して安全なサーバーHTTPS接続を形成する
- 既存の複雑な構成ファイルの使用
- この GitHub プロジェクト の概要を示す のような高度なモジュールの
mod_perl 活用
これらのユースケースは httpd 公式イメージ自体に固有のものではありませんが、これらの外部設定をイメージ自体に含めるのは簡単です。 このプロセスを調べて、最初のApacheコンテナイメージを使用する方法の概要を説明します。
などの mod_php
ユースケースでは、 PHP Docker公式 イメージなどの専用イメージがおそらくより適しています。
httpd Docker 公式イメージの使い方
先に進む前に、 Dockerデスクトップをダウンロードしてインストールする必要があります。 このチュートリアルでは引き続き CLI を使用しますが、組み込みの Docker ダッシュボードには、イメージとコンテナーを管理するための使いやすい UI が用意されています。 ボタンをクリックするだけで、実行中のコンテナーを簡単に開始、一時停止、削除、および検査できます。 先に進む前に、デスクトップを実行して開いてください。
httpd 公式イメージを活用する最も簡単な方法は、 Docker Hub にアクセスし、コマンドを docker pull httpd
ターミナルにコピーして実行することです。 これにより、イメージ内の各パッケージと依存関係がダウンロードされてから、Docker Desktop に自動的に追加されます。
このビデオでhttpdが正しく機能していることを確認している間に、いくつかの重要なことが起こりました。
- この
docker pull httpd
コマンドを使用してhttpdイメージをプルしました。 - Docker Desktop の [イメージ] ペインでイメージを見つけ、[実行] を選択して、[オプション設定] ペインを展開しました。 見つけやすいようにイメージに名前を付け、ホストポートとして8080を入力してから、もう一度[実行]をクリックします。
- デスクトップでは、名前付きコンテナーが期待どおりに実行されている [コンテナー
TestApache
] ウィンドウに直接移動しました。 - ブラウザの「http://localhost:8080」にアクセスして、基本的なセットアップをテストしました。
この例では、 :latest
httpd のバージョンを自動的に取得します。 番号付きバージョンまたはより具体的なタグを指定することをお勧めします (これらの :latest
バージョンでは破壊的変更が導入される可能性があるため)。 本番環境に移行する前に、これらの変更を監視し、効果的にテストするのは難しい場合があります。
これは素晴らしいテストケースですが、もう少しカスタマイズされたものを構築したい場合はどうでしょうか。 これはa Dockerfile
が便利なところです。
イメージで Dockerfile を使用する方法
他のワークフローほど一般的ではありませんが、httpd Docker 公式イメージで を使用すると Dockerfile
、カスタム構成を定義するのに役立ちます。
Your Dockerfile
は、イメージのビルド方法を Docker に指示するプレーン テキスト ファイルです。 イメージを手動でビルドする際に、このファイルを使用すると、デフォルトのhttpdイメージに含まれるものを超えて、 構成と有用な画像レイヤーを作成できます 。
HTML サーバーの実行は、httpd Docker Official Image との一般的なワークフローです。 プロジェクトの完全なHTMLを含むディレクトリに追加 Dockerfile
する必要があります。 この例では、これを public-html
呼び出します。
FROM httpd:2.4 COPY ./public-html/ /usr/local/apache2/htdocs/
この命令は FROM
、ベースイメージとしてhttpd:2.4を使用するようにビルダーに指示します。 命令は COPY
、指定されたソースから新しいファイルまたはディレクトリをコピーし、それらをファイルシステムの特定の場所に追加します。 この設定はかなり必要最低限のものですが、それでも機能的なApache HTTPサーバーイメージを作成することができます!
次に、この新しい画像の両方を使用して build
run
、実際の動作を確認する必要があります。次の 2 つのコマンドを順番に実行します。
$ docker build -t my-apache2 . $ docker run -d --name my-running-app -p 8080:80 my-apache2
まず、 docker build
以前の Dockerfile
. このコマンドは docker run
、このイメージを取得し、そこからコンテナーを開始します。 このコンテナーは、デタッチ モードまたはバックグラウンドで実行されています。 さらに一歩進んで、実行中のコンテナー内のシェルを開く場合は、3 番目のコマンドを入力します。 docker exec -ti my-running-app sh
ただし、この例ではこれは必要ありません。
最後に、ブラウザにアクセスして http://localhost:8080
、すべてが正しく実行されていることを確認します。
ドッカーファイルなしでイメージを使用する方法
場合によっては、イメージビルドに必要ない、または必要 Dockerfile
ない場合があります。 これは、ほとんどの開発者が採用 Dockerfile
するより一般的なアプローチであり、. また、いくつかのコマンドが必要です。
そうは言っても、次のコマンドを入力してApache HTTPサーバーコンテナを実行します。
マック:
$ docker run -d --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
リナックス:
$ docker run -d --name my-apache-app -p 8080:80 -v $(pwd):/usr/local/apache2/htdocs/ httpd:2.4
ウィンドウズ:
$ docker run -d --name my-apache-app -p 8080:80 -v "$pwd":/usr/local/apache2/htdocs/ httpd:2.4
手記: ほとんどのLinuxユーザーにとって、このコマンドのMacバージョンは機能しますが、互換性のあるシェルを実行しているユーザーにとってはLinuxバージョンが最も安全です。 Docker Desktop bash
を実行している Windows ユーザーは使用できますが、 ”$pwd”
PowerShell には必要です。
バインドを使用すると -v
、プロジェクトディレクトリが マウント され $PWD
、macOSまたはLinuxを実行している場合は、(またはそのOS固有のバリエーション)現在の作業ディレクトリに効果的に拡張されます。 これにより、コンテナはファイルシステムに効果的にアクセスし、実行に必要なものを取得できます。 Docker Desktop内で以前に行ったように、ホスト port 8080
をコンテナに接続し、Apacheコンテナ port 80/tcp
をバックグラウンドで実行しています。
構成と役立つヒント
Apache HTTP サーバー構成のカスタマイズは、2 つの簡単な手順で可能です。 まず、次のコマンドを入力して、アップストリームのデフォルト設定を取得します。
<code>docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf</code>
次に、必要なディレクトリからカスタム構成の COPY に戻ります Dockerfile
。
FROM httpd:2.4 COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
それです! これで、Apache HTTP Server の設定が所定の位置にドロップされました。 これには、モジュールの変更や、サーバーの実行に役立つ機能の追加が含まれる場合があります。
SSLを介してデータ暗号化のロックを解除する方法
Apache はデフォルトで HTTP 経由で接続を形成します。 これは、セキュリティが重要ではない小規模なプロジェクト、テストケース、およびサーバーのセットアップに適しています。 ただし、大規模なアプリケーション、特に機密データを転送するアプリケーション (エンタープライズ アプリなど) では、暗号化が必要になる場合があります。 HTTPSは、デフォルトの暗号化を考慮して、すべてのWebトラフィックが使用する必要がある標準です。
これは、 暗号化モジュール を使用して mod_ssl Apacheを介してネイティブに可能です。
Docker のコンテキストでは、SSL 経由で Web トラフィックを実行するということは、命令を使用して COPY
ディレクトリに /usr/local/apache2/conf/
and server.key
を追加する server.crt
ことを意味します。
これはこのプロセスの要約バージョンであり、SSLを起動して実行するにはさらに多くの手順が必要です。 親しみやすい手順の完全なリストについては、「SSL/HTTPS」セクションにある Docker Hub のドキュメント を確認してください。 重要なのは、SSLはポート80の代わりにポート443を使用するということです—後者は通常暗号化されていないデータ用に予約されています)。
最初のhttpdドッカーの公式イメージをプルする
httpd Docker Official Image をうまく使って Apache HTTP Server をコンテナ化して実行する方法をデモしました。 これは、Webページを提供し、さまざまなWebアプリケーション(安全かどうかにかかわらず)を強化するのに最適です。 このイメージを使用すると、問題に遭遇することなく、クロスプラットフォームおよびクロスブラウザーをデプロイできます。
Apache と Docker を組み合わせることで、開発者が Apache HTTP Server に期待するカスタマイズ性と機能の多くも維持されます。 すぐに実験を開始するには、 Docker Hub にアクセスして 、最初の httpd コンテナー イメージをプルします。
—
参考文献:
- httpd GitHub リポジトリ
- 素晴らしい作曲: Apache2を使用したサンプルPHPアプリケーション