注意: この方法ではhttps通信が出来ない事を確認しました。参考程度にして下さい。2023.9.9
前回の説明を参考に docker compose を使用して Amazon Linux2 コンテナに Apache をインストールし、HTTPS通信を行います。
なお、前回は以下を参照して下さい。
目次
ディレクトリ構成
ディレクトリ構成は以下とします。
ディレクトリ or ファイル | 説明 |
---|---|
app | htmlやphpファイルなどを配置する為のディレクトリ |
docker-compose.yml | docker-compose.ymlファイル |
docker/web/Dockerfile | Dockerfileファイル |
docker/web/certs | サーバ証明書ファイル配置ディレクトリ |
docker/web/conf | HTTPS通信用Apache設定ファイル配置ディレクトリ |
サーバ証明書の作成
mkcertを使用し、サーバ証明書を作成します。作成方法は以下を参考にして下さい。
作成したサーバ証明書(ファイル)は以下へ配置して下さい。
・パス
docker/web/certs
・ファイル名
server_key.pem
server.pem
HTTPS通信用の設定ファイル設置
HTTPS通信を行う為のApacheの設定ファイルを作成します。今回は例として localssl.conf と言うファイルを作成します。
localssl.confの内容は以下の通りです。サーバ証明書及び、秘密鍵のパス、ファイル名は適宜変更して下さい。
Listen 443 https
SSLCertificateFile /etc/ssl/local/certs/server.pem
SSLCertificateKeyFile /etc/ssl/local/certs/server_key.pem
作成したファイルは以下へ配置して下さい。
・パス
docker/web/conf
・ファイル名
localssl.conf
docker-compose.yml
内容
内容は以下の通りです。
version: '3'
services:
web:
container_name: amazonlinux2_sample08
restart: always
build:
context: .
dockerfile: ./docker/web/Dockerfile
privileged: true
ports:
- 80:80
- 443:443
volumes:
- ./app:/var/www/html
- ./docker/web/certs:/etc/ssl/local/certs
ポイント説明
サーバ証明書
サーバ証明書をホストOSとゲストOSで共有します。具体的な設定箇所は以下となります。
./docker/web/certs:/etc/ssl/local/certs
Dockerfile
内容
内容は以下の通りです。
# イメージ
FROM amazonlinux:2
# apacheのインストール
RUN yum -y update
RUN yum -y install httpd
# Apacheの設定ファイルを配置する。
ADD ./docker/web/conf/*.conf /etc/httpd/conf.d/
# mod ssl のインストール
RUN yum install -y mod_ssl
# mod ssl をインストールした時に作成されるssl設定ファイルを使用しない
RUN mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf_bk
# apacheを自動起動させる
RUN systemctl enable httpd
# コンテナ起動時 (docker run) コマンド
CMD ["/sbin/init"]
ポイント説明
設定ファイルの読み込み
localssl.conf をApacheに読み込ませます。ホストOSのディレクトリ ./docker/web/conf/ 以下のファイル拡張子が .conf のファイルを ゲストOSのディレクトリ /etc/httpd/conf.d/ へコピーします。/etc/httpd/conf.d/ 以下はApacheが読み込む設定ファイルのディレクトリとなっています。具体的な設定箇所は以下となります。
ADD ./docker/web/conf/*.conf /etc/httpd/conf.d/
なお、Apacheが読み込むモジュールについては以下を参考にして下さい。
mod_ssl インストール
ssl 通信を行う為のApacheのモジュールをインストールします。具体的な設定は以下となります。
RUN yum install -y mod_ssl
mod_sslインストール時に読み込まれる設定ファイルのキャンセル
mod_sslをインストールすると、ssl.conf と言うファイルが読み込まれます。このファイルを修正して使用してもいいのですが、今回は、localssl.conf を使用する為、ssl.confをリネームして読み込みを行わないようにします。具体的な設定は以下となります。
RUN mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf_bk
コマンドの実行
docker-compose.ymlが存在するディレクトリで、以下の順にコマンドを実行します。
・ビルド
docker-compose build
・コンテナ起動
docker-compose up -d
・コンテナ起動確認
docker-compose ps
動作確認
動作確認用ファイルの作成
以下のコマンドを実行し、確認の為にブラウザに表示させるファイルを作成します。
内容は “test” と言う文字としますが内容はなんでも良いです。
・コマンド
vi /var/www/html/index.html
確認
ブラウザへ https://localhost を入力して下さい。 “test” と表示されれば成功です。
最後に
特にありません。