カテゴリー
Linux

Docker の nginx:latest (1.15.5) で SSL/TLS を使えるようにする最低限の Dockerfile を作りました

TLS/SSL で接続できる最低限の Nginx Dockerfile

FROM nginx:latest

RUN apt-get update && apt-get install -y \
    openssl \
    ssl-cert \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

COPY ./conf.d/ssl.conf /etc/nginx/conf.d/
server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/ssl/certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key  /etc/ssl/private/ssl-cert-snakeoil.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

使用したコマンドまとめ

# Docker イメージをビルド
docker image build -t image_name:tag_name .
# Docker イメージを一覧表示
docker image ls

# コンテナを使い捨てで起動
docker container run --rm -d -p 80:80 -p 443:443 --name container_name image_name:tag_name
# コンテナに入る
docker container exec -it container_id_or_name bash
# コンテナを停止
docker container stop container_id_or_name
# コンテナの稼働状況を一覧表示
docker container ps -a
# (ホストから操作) コンテナ内のファイルをホストへコピー
docker container cp container_id_or_name:/path/to/file.conf file.conf

# Nginx 設定の確認
nginx -t
# Nginx 再起動
nginx -s reload

進め方

実際に Dockerfile を作り上げるまでに実行したコマンドや、進め方です。

# イメージをビルド
docker build -t ns:latest .

# コンテナを起動 (stop すれば自動的に削除)
# -p オプションを 2 つ付けて、80 と 443 ポートを開けている点に注目
docker container run --rm -d -p 80:80 -p 443:443 --name ns1 ns:latest

# コンテナを停止
docker container stop ns1

# コンテナに入る
docker container exec -it ns1 bash

# コンテナ内
# Dockerfile に書く予定のインストールするパッケージをインストールして試したい。
# まずは、パッケージリストの更新
apt-get update

# いろいろインストール
apt-get install openssl

# ファイル編集にはやっぱり Vim
apt-get install vim

# 設定ファイルを編集したら、Nginx の再起動
nginx -s reload

おわりに

Nginx と php-fpm を連携してウェブサーバを立てたいです♪

HTTP だけではなく、 HTTPS 、つまり SSL/TLS も使いたいです。
ところが、 Nginx ではデフォルトでは使用できません。
Nginx と php-fpm を連携しきった状態から試行錯誤すると、いらぬところで壁にぶつかるかも知れませんので、最小限の構成で、有効にする手立てを確認いたしました。

スッキリしました♪

以上です。

コメントを残す