LoginSignup
18
17

More than 5 years have passed since last update.

dockerでnginxを使ったときのメモ

Last updated at Posted at 2019-02-05

dockerでnginxのコンテナを作成した時のメモを残す。

前提

nginxはド素人。PHP(Laravel)の環境を作る必要があり、使ったことが無いnginxで動かしてみようという軽いノリで始めたメモ。

docker pull nginx

command
$ docker pull nginx
$ docker run --name nginx00 -d -p 8080:80 nginx:latest

基本はこんな感じで、 とりあえず動かして喜ぶ。
で、以前の僕は必要なオプションを追加追加追加追加しながら自分に合ったオプションを含めてコマンドを覚えていた。

よく使ったオプション[-v]

ローカルのディレクトリとコンテナ内のディレクトリをマウントしていた。

よく使ったオプション[--link]

他のコンテナと連携するために使っていた。が、今は非推奨になっていた。調べてみると、コンテナで使用する専用のネットワークを予め作る事でコンテナ間の連携が出来るらしい。

command
$ docker network create <NETWORKNAME>
$ docker run --name nginx00 -d -p 8080:80 nginx:latest --net=<NETWORKNAME>

同じネットワークを利用したコンテナ同士で連携が出来ると言うことなんだろう。

docker-compose

コマンドとオプションを揃えて忘れないようにメモ帳に残していたときもあったけど。多分、スマートじゃ無い。薄々わかっていたので今回はそれは避ける。
どうやら、 docker-composeという機能があるらしいので挑戦。

docker-compose.yml

作りたい環境の構成を docker-compose.yml にYAML形式で記しておけばいいらしい。

docker-compose.yml
version: '3'

services:
  web:
    build:
#     context: <dockerfileのパス:./hogehoge>
#     dockerfile: <dockerfile名:xxx.dokerfile>
      context: ./docker
      dockerfile: web.docker
#   container_name: <作成するコンテナ名?>
    container_name: web00
#   depends_on:
#     - <連携したいコンテナ名?>
    ports:
      - 8080:80
    volumes:
      - ./proj/var/www/html:/var/www/html
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - <所属するネットワーク名?>
network:
  - <作成するネットワーク名(所属するネットワーク名)?>

docker-compose.yml と dockerfile を適切な場所に用意したら docker-composeコマンド実行すると自動でコンテナが出来上がる。

command
$ docker-compose up -d

-dオプションを付加しないとバックグラウンド実行にならない。
環境が不要になったら、 updownに変えて実行。

command
$ docker-compose down

コンテナが停止し、 コンテナが削除される

docker-compose.ymlについては、改めて調べてから別途メモを残したい。

./docker/web.docker

今はとりあえず動かすことが優先なので一行だけしか書いていない。

web.docker
FROM nginx:latest

これだけなら、docker-compose.ymlでimageを指定すれば済んだはず。

./docker/nginx.conf

nginxの設定を予め用意する。これで上書く。
このファイルを書くまで気付かなかったが、nginxのドキュメントルートの標準は /usr/share/nginx/htmlらしいので、 /var/www/htmlに変更した。

nginx.conf
server {
    listen       80;
    server_name  web00;
    root         /var/www/html;

    location / {
        # root   /usr/share/nginx/html;
        # index  index.html index.htm;
        root   /var/www/html;
        index  index.php index.html index.htm;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        # root   /usr/share/nginx/html;
        root   /var/www/html;
    }

}
18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17