【Docker入門 】② Webサーバ構築 & ホストのディレクトリ共有(ボリュームマウント)

DockerコンテナでWebサーバ構築 & ホストのディレクトリ共有

前回の記事でDockerのインストールとDocker imageのセットアップが出来るようになったら、
コンテナへWebサーバを構築してサイトやアプリケーションが実行出来るようしていきます。

環境: Mac 10.13.6、 Docker version 19.03.5

コンテナ〜ホスト間でディレクトリを共有する

Dockerコンテナ作成時にホスト側のディレクトリをボリューム(外部記憶装置)としてマウントし、
コンテナの外側からソースファイルの編集、サイトの開発が出来るようにします。

1. ホスト側で開発用ディレクトリを作成する

$ mkdir docker-site

(作成したディレクトリをカレントにする)

$ cd docker-site/

2. コンテナの作成
※前回の記事でコンテナを作成している場合は異なるコンテナ名にするか、一度削除して作り直します。
docker runコマンドの-vオプションを使用する

docker run -p 80:80 -d --privileged --name mycentos7 -v $(pwd):/var/www/html centos:centos7 /sbin/init

-vオプションで指定したディレクトリ同士が共有ディレクトリとなります。
-v ホスト側のディレクトリパス : コンテナ側のディレクトリパス

ホスト側 → $(pwd) とするとカレントディレクトリが指定されます。
コンテナ側 → webサーバ(Apache)のドキュメントルートディレクトリ /var/www/html を指定しています。

マウント中のボリュームを確認する方法

コンテナへマウント中のホストのディレクトリの場所を後から確認したい時はコンテナの外から下記のコマンドを実行します。

$ docker inspect コンテナID

表示される項目のうち、HostConfig “Binds”の箇所から同期しているホストのディレクトリが確認出来ます。

        "HostConfig": {
            "Binds": [
                "/Users/ユーザ名/Desktop/docker-test:/var/www/html"
            ],

Webサーバ(Apache)を構築

コンテナにWebサーバ、Apache HTTP Serverをセットアップします。
前回の記事で解説したように作成 & 起動したコンテナへ docker execコマンドでログインし、
Apacheのインストール & 起動を行います。

docker exec -it (コンテナ名) bash

(Apacheの導入については下記を参照)

LAMP環境構築マニュアル ② Apacheインストール編

ディレクトリの共有を確認する

Apacheのインストールと起動が確認出来たら、
コンテナにログインした状態で確認用のページ(htmlファイル)を/var/www/html 内に作成します。
(vi 新規ファイル作成)

[root@XXXXXXXXXXX /]# vi /var/www/html/index.html

コンテナとの接続を切る

[root@XXXXXXXXXXX /]# exit

接続を切ったら、コンテナ内で作成したファイルがカレントから参照出来ている事を確認します。

$ ls
index.html

ホスト側からもテキストエディタ等で変更を加えて、ページへ反映されていればローカル開発環境の完成です。

アクセス確認

セットアップしたApacheを起動して、
http://localhost/(ファイルパス) へアクセスしてブラウザで確認出来ます。

※ -pオプションでホストのポートが80以外の場合は明示してください。
http://localhost:81/

共有されたディレクトリ内はコンテナ側、ホスト側双方向から変更を行えます。

Follow me!

【Docker入門 】② Webサーバ構築 & ホストのディレクトリ共有(ボリュームマウント)” に対して1件のコメントがあります。

コメントは受け付けていません。