LoginSignup
5
0

DockerとLaravelを使ったhttpsのlocal環境構築

Last updated at Posted at 2023-12-19

はじめに

こんにちは、オールアバウトエンジニアの@monpei68です。
本記事はAll About Group(株式会社オールアバウト) Advent Calendar 2023の20日目の記事です。

普段の業務ではLaravelを使ったアプリケーションの開発をしております。
業務の中でhttps化したlocal環境で動作検証したいことがあり、環境構築をしました。
今回は、その構築の仕方ついて紹介できればと思います。

環境

  • OS:Mac
  • Dockerイメージ:php:8.2.8-apache-bullseye

証明書に関して

Homebrewを使ってmkcertをインストールします。
(mkcert以外にも証明書を作成する方法は色々ありますが、一番お手軽にできそうなmkcertがおすすめかなと思います。)

brew install mkcert

mkcertインストールできましたら、証明書の発行をします。

mkcert localhost

上記コマンドを実行すると下記のファイルが作成されます。

  • localhost.pem
  • localhost-key.pem

作成されたファイルの置き場所は、後述する「ディレクトリ構成」を参考にしてください。

備考

  • mkcertに関して
  • Homebrewをインストールしていない場合は、こちらからインストールできます。

ディレクトリ構成

今回は下記のようなディレクトリ構成で作成しました。

# ディレクトリとファイル構成

├── docker-compose.yml
└── docker
    └── web
        └──Dockerfile
        └──default-ssl.conf
        └──app.conf
        └──certs
            └──localhost-key.pem
            └──localhost.pem
        

では、それぞれのファイルで追加したコードについて説明します。

各ファイルについて

docker-compose

web:
 build: docker/web
 ports:
  - "8443:443"
 volumes:
  - ./docker/web/default-ssl.conf:/etc/apache2/sites-available/default-ssl.conf

docker-composeのportsにhttps通信のための443を指定します。

Dockerfile

HTTPS通信に必要なApacheのモジュールの有効化と、default-ssl.confの有効化を行います。

FROM php:8.2.8-apache-bullseye

# 省略
COPY ./app.conf /etc/apache2/sites-available/app.conf
RUN a2enmod rewrite && a2enmod ssl && a2enmod socache_shmcb
COPY ./certs/*.pem /etc/apache2/ssl/
RUN a2ensite default-ssl
# 省略

default-ssl.confの作成

default-ssl.confを下記のexampleをコピーして作成します。

コピー後、一部コードの変更をします。

# 32行目
SSLCertificateFile /etc/apache2/ssl/localhost.pem
# 33行目
SSLCertificateKeyFile /etc/apache2/ssl/localhost-key.pem

サーバ証明書と秘密鍵のファイルパスの指定を、mkcertで作成した証明書を参照するように変更します。

app.conf

最後にアプリのconfigファイルのコードを下記に変更します。

<VirtualHost *:443>
  ServerName localhost
  DocumentRoot /app/web/public

  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/localhost.pem
  SSLCertificateKeyFile /etc/apache2/ssl/localhost-key.pem

  <Directory /app/web/public>
    Options +FollowSymLinks

    AllowOverride All
    Require all granted
  </Directory>

</VirtualHost>

各ファイルの変更は以上になります。
コンテナを起動して確認してください。

最後に

今回はhttps化したlocal環境の構築について紹介しました。
この記事がどなたかのお役にたてれば嬉しいです。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0