イメージ
そのものずばりなnginx:latestを用いる。
docker pull nginx
普通にnginxがインストールされた状態と同じ状態のものがコンテナとして動く。
- ログは
/var/log/nginxに吐かれる - 設定ファイル等は
/etc/nginx以下に配置されている - ポート80番で待ち受けている
- ドキュメントルートは
/usr/share/nginx/htmlに設定されている
したがって、これらのディレクトリやファイルを適時マウントして置き換えて使用すれば良い。
Webサーバとして使用する
特に小難しいことなしに普通にWebサーバを立ち上げるだけであれば、
- html等の収まったディレクトリ
- ログの吐き出し場所
- 割り当てるポート
をそれぞれマウントしてやれば良い。
※ログのタイムスタンプを気にするならば/etc/localtimeもマウントしといた方が良い
docker run --rm -v <HTMLディレクトリ>:/usr/share/nginx/html/ -v <ログディレクトリ>:/var/log/nginx/ -v /etc/localtime:/etc/localtime:ro -p <ポート>:80 nginx
Proxyとして使用する
設定ファイルをマウントして置き換える形で実現できる。
ごく単純な例として、
http://consul.service.local.consulとしてアクセスされたらhttp://192.168.77.6:8500に飛ばしたいならば、
下記のようなnginx.confを作成し、
user nginx;
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
server_name consul.service.local.consul;
proxy_set_header Host $http_host;
location / {
proxy_pass http://192.168.77.6:8500;
}
}
}
これをマウントする形で起動すればよい。
docker run --rm -v <confのディレクトリ>:/etc/nginx/ -p 80:80 nginx
※Docker Composeを使った記述だとファイルそのものを指定してマウントできたんだけど、素のコマンドの-vオプションだとディレクトリじゃないと怒られる模様