diadia

興味があることをやってみる。自分のメモを残しておきます。

docker nginxの基本的な使い方

dockerを触ってみて分かったこと。

dockerのコマンドを使ってimage作成やコンテナを実行する。 これとは別に、つまりdockerコマンドを使ってimage作成する代わりに、Dockerfileを作ってdocker buildコマンドを使うとimageを作成する事もできる。 ここに関して当初自分はDockerfileにはコンテナの起動に関する内容を記述できるものだと勘違いしていた。しかしDockerfileはどんなimageを作成するかを明文化するだけである。

docker build -t (イメージ名:タグ)  (Dockerfileがあるディレクトリ)

これでimageを作成する事ができる。

そしてこのイメージを使ってコンテナを起動するわけだけれども、docker-compose.ymlの記述に従って作成したimageやダウンロードしたimageをコンテナとして起動することができると分かった。したがってdocker-composeでできることをdockerfileではどのように表現できるのかと考えだしたら当然できないことなので時間を無駄にしてしまう。。。

docker hubのnginx

https://hub.docker.com/_/nginx

Alpine Linux 対応 Nginx イメージのダウンロード

# docker pull nginx:alpine

Nginxコンテナの実行

# docker run -d -p 8080:80 nginx:alpine

これはホストの8080番ポートにアクセスすると80番ポートに渡される。

dockerfileで書くとどうなるか

FROM nginx:1.15.12-alpine

COPY nginx.conf /etc/nginx/conf.d
#./nginx.conf
server {
    listen  80;
    
    server_name local_host;

    location /static {
        alias /usr/share/nginx/html/static;
    }

    location /media {
        alias /usr/share/nginx/html/media;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

dockerfileからimageを作成する

docker build -t myNginx:hoge .

コンテナを起動する

docker run myNginx:hoge