DockerでSSLを使う

技術関連

普段はSSLで使うサーバーのみとなりつつありますので、Dockerでの開発環境も今更ながらSSL化させたのでメモ

windows環境でのインストール方法

Chocolateyのインストール

cmd上にて以下を入力

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

これで完了です。以下は確認。

c:\ > choco list -l
Chocolatey v0.10.15
chocolatey 0.10.15
1 packages installed.

mkcertをインストールし証明書作成

mkcertをインストールします。–installは最初だけ行えばOK。

c:\ > choco install mkcert
c:\ > mkcert --install

サーバー証明書を発行

c:\ > mkcert localhost

これで、カレントディレクトリに証明書が作成されます

c:\ > ls
localhost-key.pem    localhost.pem

Docker設定

あとは、普通に使えば良いのですが一応メモをまとめます

# Dockerfile
FROM nginx
ADD nginx.conf /etc/nginx/nginx.conf
ADD fastcgi.conf /etc/nginx/fastcgi.conf
ADD server.conf /etc/nginx/conf.d/default.conf
ADD localhost.pem /etc/ssl/certs/localhost.pem
ADD localhost-key.pem /etc/ssl/certs/localhost-key.pem
# server.conf
server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate     /etc/ssl/certs/localhost.crt.pem;
    ssl_certificate_key /etc/ssl/certs/localhost.key.pem;
# docker-compose.yml 一部抜粋
version: '2'
services:
  nginx:
    build: ./nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ../:/var/www/html
    links:
      - web

  web:
    build: ./php-fpm
    volumes:
      - ../:/var/www/html
    links:
      - mysql
    env_file: .env

コメント

タイトルとURLをコピーしました