Dockerネットワーク入門:Apacheコンテナでテストページ表示

※この記事で使用しているリソースを一括でダウンロードすることができます。
前提
・簡単なdockerのコマンドについておおむね理解していること
・vscodeを使用して準備・確認を行います。
・windows(WSL)上での実施手順になっています。
・リソースをダウンロードした方はDockerfileをビルドするから実施できます。※リソースの内容を確認したい方は、リソースの準備の内容に照らし合わせて確認してみてください。
リソースの準備
「Apacheコンテナでテストページ表示」するためにリソースを用意していきましょう。
作業ディレクトリを作成する
まずはvscodeでWSLに接続していきましょう。(ご自身で作業したいディレクトリを選択します)
※こちらの記事で「vscodeでwslに接続する方法」を説明しています。
WSLに接続出来たら作業ディレクトリを作成し、移動しておきます。本記事では作業ディレクトリを「docker-httpd」とします。
ターミナルmkdir docker-httpd cd docker-httpd
下図のようになっていればOKです。
テストページを準備する
作業ディレクトリ(docker-httpd)にディレクトリ「public-html」を作成し、そこに「index.html」を置きます。
ターミナルmkdir public-html
以下の「index.html」は「Docker apache test」を表示するhtmlになっています。
※「body」タグの中身はご自身で好きな内容を書いてもらっても問題ありません。
index.html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> Docker apache test </body> </html>
下図のようになっていればOKです。
Dockerfileを準備する
以下の内容で作業ディレクトリ(docker-httpd)にDockerfileを作成しましょう。
「FROM httpd:2.4」はApacheのイメージを使用することを意味します。
「COPY ./public-html/ /usr/local/apache2/htdocs/」は作業ディレクトリ「public-html」の内容をコンテナの「/usr/local/apache2/htdocs/」にコピーすることを意味します。
DockerfileFROM httpd:2.4 COPY ./public-html/ /usr/local/apache2/htdocs/
下図のようになっていればOKです。
Dockerfileをビルドする
作成したリソースを使用してビルドしていきましょう。下図のように作業ディレクトリに入って「docker build」しましょう。
ターミナルdocker build . -t httpd
下図のように「httpd」イメージが作成されていればOKです。
ポートフォアーディング設定
イメージもできたので「docker run」でコンテナを上げていこうと思うかもしれませんが、普通に「docker run」しただけでは、コンテナのポートにはアクセスできません。
なのでこのセクションではコンテナのポートにアクセスできるようにするポートフォアーディング設定を解説していきます。
ポートフォアーディングとは
そもそも「ポートフォアーディング設定」って何と思った方もいると思うので解説します。
Dockerにおけるポートフォワーディングは、ホストマシンのポートとコンテナ内のポートをマッピングし、外部からコンテナへアクセスできるようにする設定となります。
文字で見るとわかりにくいかと思うので実際にやってみましょう。
コンテナ起動とポートフォアーディング
ポートフォワーディング設定してコンテナを起動するコマンドは以下になります。
特に「-p 8080:80」部分がポートフォワーディング設定している個所になります。ホスト(あなたが使っているPC)の8080ポートと作成するコンテナ(my-running-app)の80ポートをマッピングしています。
ターミナルdocker run -d --name my-running-app -p 8080:80 httpd
下図のようにコンテナが立ち上がればOKです。
※この時に「Windows Defender」の「セキュリティ警告」(パブリックネットワークとプライベートネットワークにこのアプリへのアクセスを許可しますか?)が出る場合、基本的にdockerでパブリック・プライベートネットワークどちらも許可する必要はありません。なので「キャンセル」を選択するほうがいいです。(どちらも許可しないとしてもlocalhostでアクセスすることはできます。)
テストページを表示する
コンテナが立ち上がったので実際にブラウザで確認してみましょう。
ブラウザhttp://localhost:8080/
下図のようにテストページを準備するで作成した内容が表示されていればOKです。お疲れさまでした。
最後に
今回はdockerでWebサーバのコンテナ(Apache)を立ち上げる場合、どのようにしてポートフォアーディング設定をするかについて説明していきました。いくつかdockerの記事を見ていただけていれば、どのように使っていくかイメージがついてきたのではないでしょうか?
今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!