docker
Dockerでhttps 環境を作る

https+PHPで作成してみる

APIのテストなどを行う場合、HTTPS環境でないと動作しない場合があるため、ローカル環境でもHTTPSが必要となる場合があった。

nginx + php で構築

このウェブサイトでは、PHPは必要なかったのだけれども、仕事で ウェブサーバー + PHPが必要だったので、nginx + php で試してみた

色々と準備が必要

事前に以下のものを用意する

  1. 証明書ファイル
  2. サーバー設定ファイル
  3. php設定ファイル
  4. php用Dockerfile
  5. docker-compose.yml

証明書ファイル。これは、以下などのサイトを参考に作成しておく。
「Nginxにサーバ証明書を設定する」

サーバー設定ファイル

nginx用の設定ファイルを用意する。SSLとPHPを使用するので、以下のような感じで用意しておく。

server.conf


server {
    listen 443;
    ssl on;
    ssl_certificate /etc/certs/localhost.pem;
    ssl_certificate_key /etc/certs/localhost-key.pem;
	server_name localhost;
    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    root  /var/www/html/;
    index index.php index.html;

    charset utf-8;

      location / {
	    alias /var/www/html/;
	  }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}


PHP.iniとDockerFile

この辺は、codelikeなブログ さんを参照に作成。

https://codelikes.com/docker-compose-point/

docker-compose.yml

ymlファイルの作成。


version: '3'
services:
  nginx:
    image: nginx:latest
    container_name: local_nginx
    ports:
      - 8080:80 
      - 443:443
    depends_on:
      - php
    volumes:
      - (ローカルの場所):/etc/nginx/conf.d/default.conf
      - (ローカルの場所):/etc/certs/localhost.pem
      - (ローカルの場所):/etc/certs/localhost-key.pem
      - (ローカルの場所):/var/www/html

  php:
    build: ./php
    container_name: local_php
    volumes:
      - (ローカルの場所):/var/www/html
      - (ローカルの場所):/usr/local/etc/php/php.ini

docker-compose を行う

ymlファイルが保存しているディレクトリに移動後、


docker-compose -f docker-compose.yml up -d

で起動。

dockerからブラウザを開くと、400 Bad Request でてしまうかもしれないが、


https://localhost:443

に直してあげると開くはず。

止めるときは、


docker-compose -f docker-compose.yml down -v

downもup もオプションがあるので、調べてみるといいかも。

余談

Dockerを学習し始めたときは、書籍を使用していたのだけれども、手に取った本がわかりやすかったので紹介しておこうと思う。

基本的なことはこちらで学習した後、今回のような目的に合わせたものは検索しつつという方法をとった。実は数年前にDockerに手を出したが、よくわからん & ローカルに環境あるし、でほったらかしにしていた。そこで本屋で立ち読みして、良さそうなものを買ったのがこちら。シンプルにまとめていて良本だと思います。リンク先はアマゾン。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

さらに余談だけれども、最近、実用書/参考書は、電子書籍と半々位で購入してる。個人的にcodeを参考するようなものは電子書籍で、やり方(Dockerもそこそこ書くけど)を参考するようなのは普通の書籍の方が良いような気がしてる近ごろです。本当にどうでもいい余談。