見出し画像

【Docker】DockerでHTTPS通信をする(localhostでやります)

はじめに

dockerlocalhostでアプリケーションの実装をしていて、挙動が確認できたので本番稼働に移そうとサーバーにDockerコンテナを構築して、HTTPS稼働させようとしていると、上手いこといかないことがあったので、これが無いようにlocalhostでもHTTPS通信が出来るように行っていく。

基本的な設定方法はローカル環境でもサーバー側でも同じですので、サーバ側で行うときは適宜読み変えてください。

前提条件

・Dockerコンテナは作成済みでlocalhostやドメインでアクセスすることが確認できている
・SSL証明書(自作でも可)を準備できている

手順

・SSL証明を任意のディレクトリに配置
・default.confを編集
・docker-compose.ymlを編集
・編集を反映(docker-composeで再起動)
・https://localhostで接続確認

実装

まずdockerでコンテナが起動しているかの確認

docker ps

でコンテナ起動していて、接続できていることを確認する。

SSL証明書を配置する

今回はSSL証明書を設置するためのディレクトリ。sslというディレクトリをnginx配下に作成する。(以下参照)

├─docker
│  ├─db
│  │  ├─data
│  │  ├─my.cnf
│  │  └─sql
│  ├─nginx
│  │  └─ssl // ここに証明書を保存する
│  └─php
└─server

あとは、サーバー証明書をsslに移してくる。(以下参照)

├─nginx
│  │  default.conf
│  │
│  └─sslserver.crtserver.key

次にdefalt.comfの記載を変更する。

 server {
 listen 80;
   index index.php index.html;
   root /var/www/;

   <~省略~>

} 

// https通信用の433のポートを記載
server {
 listen 443 ssl;
   index index.php index.html;
   root /var/www/; //ここは適宜変えてください。

 location / {
   root /var/www/; //ここは適宜変えてください。
   index  index.html index.php;
   try_files $uri $uri/ /index.php$query_string;
   }
   // 以下を追記
   ssl_certificate       /etc/nginx/ssl/server.crt; // SSL証明書
   ssl_certificate_key   /etc/nginx/ssl/server.key; // 秘密鍵

 location ~ \.php$ {

   try_files $uri =404;
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_pass app:9000;
   fastcgi_index index.php;
   include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param PATH_INFO $fastcgi_path_info;
 }
}

次にdocker-compose.ymlを編集する

version: "3"

services:
 app:
   <省略>
   depends_on:
     - db

 nginx:
   image: nginx
   container_name: nginx
   ports:
     - 8080:80
     - 443:443 // ここにHTTTSで通信するポートを開放しておく
   volumes:
     - ./server:/var/www
     - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
     // 以下を追記 /etc/nginx/ssl に docker/nginx/ssl をマウントさせる
     - ./docker/nginx/ssl:/etc/nginx/ssl
   depends_on:
     - app

 db:
   <省略>

以上で設定は終わりです。

再起動

あとは、

docker-compose up -d
docker-compose restart

で、https://localhostにアクセスしてみてください。

もしできていなければ

docker-compose up --build
docker-compose up -d

でビルドし直してから起動してみても良いかもです。

以上です。

参考記事


この記事が気に入ったらサポートをしてみませんか?