概要
「nginx 実践ガイド」(渡辺高志 著) (インプレス)
の学習のための docker 環境構築メモである.
御著書(以降「nginx 実践ガイド」)は、物理ホスト上に nginx やその他サービスを導入する前提になっている. そこで、Docker 上に「nginx 実践ガイド」の検証環境を構築するための手順を記す.
つまり、本記事は次の方針で記したものである. 従って nginx 設定については触れていない.
・物理ホストを汚さずに「nginx 実践ガイド」の学習ができるように、docker 上に同環境を作る手順を記す
・ただし、「nginx 実践ガイド」の無断転載にならぬように nginx に関する内容は記さない
環境
ホスト
項目 | バージョン |
---|---|
OS | Ubuntu 18.04 |
docker-compose | 1.29 |
Docker Engine | Community 19.03.13 |
docker コンテナ
項目 | バージョン |
---|---|
nginx | 1.21 |
jekyll | 4.0 |
docker-compose 置き場
使い方は RADME.md に記している
https://github.com/robozushi10/nginx-jekyll.git
補足説明
1. 構築するシステムの構成
nginx の設定を変更したい場合は PV/etc/nginx/conf.d/default.conf を編集する.
本サンプルでは、PV/SHARE/www/dir/. に公開したいファイルを配置する.
2. ファイル構成
「nginx 実践ガイド」の無断転載になるといけないので、詳細は記さない
./PV
./PV/nginx
./PV/nginx/etc
./PV/nginx/etc/nginx #.................... Docker Image「nginx:1.21」から取り出したファイルを置く
./PV/nginx/etc/nginx/fastcgi_params #...... Docker Image「nginx:1.21」から取り出したファイル
./PV/nginx/etc/nginx/scgi_params #......... Docker Image「nginx:1.21」から取り出したファイル
./PV/nginx/etc/nginx/nginx.conf #.......... 「nginx 実践ガイド」を参照
./PV/nginx/etc/nginx/uwsgi_params #........ Docker Image「nginx:1.21」から取り出したファイル
./PV/nginx/etc/nginx/conf.d
./PV/nginx/etc/nginx/conf.d/default.conf #. 「nginx 実践ガイド」を参照
./PV/nginx/etc/nginx/mime.types #.......... Docker Image「nginx:1.21」から取り出したファイル
./PV/nginx/etc/nginx/modules #............. Docker Image「nginx:1.21」から取り出したファイル(symlink)
./PV/SHARE
./PV/SHARE/www
./PV/SHARE/www/dir
./PV/SHARE/www/dir/index.html .......... 日時を書き出しただけのテキストファイル
./PV/SHARE/www/dir/_site
./PV/SHARE/www/dir/_site/index.html .... 上記 index.html が複製されて配置される
./docker-compose.yml
3. ファイル詳細
docker-compose.yml
version: '3.7'
services:
nginx:
image: nginx:1.21
container_name: mynginx0121
ports:
- "51338:80"
volumes:
- "./PV/nginx/etc/nginx/:/etc/nginx/"
- "./PV/SHARE/www/dir:/www/dir"
logging:
driver: json-file
options:
max-file: '4'
max-size: 1m
depends_on:
- jekyll
jekyll:
image: jekyll/jekyll:4.0
container_name: myjekyll
expose:
- "4000"
command: >
bash -c '
date +"%Y/%m/%d %H:%M:%S" > /srv/jekyll/index.html
jekyll serve --force_polling
'
volumes:
- "./PV/SHARE/www/dir:/srv/jekyll"
logging:
driver: json-file
options:
max-file: '4'
max-size: 1m
実行結果
次のように物理ホストの ./PV/SHARE/www/dir/index.html
が配信されていれば OK.
index.html は docker-compose.yml の中で作成しており、単に日時が記されたファイルである.
以上.