dockercompose使ってローカルでnginxのssl
laravelのローカル作業でlaradock使ってたのだけれども
ある程度色々自動やってくれるのと
使わない余計な物まで色々入りすぎてて
不具合出た時どこ直せばよいのかわかりづらい気がしたので
自分でdockerfileでやってみました。
で、とりあえずnginxでSSLをって初っ端の段階で詰まってしまったのでメモ
docker-compose.yml
version: "3"
services:
nginx:
build: ./docker/nginx/
container_name: "nginx"
ports:
- "80:80"
- "443:443"
volumes:
- ./app:/var/www/
ってやればいいって結構いろんな場所に書いてあります。
dockerfile
FROM nginx:latest
RUN apt-get update && apt-get install -y \
openssl \
ssl-cert \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY default.conf /etc/nginx/conf.d/
dockerfileは手元では
RUN apt-getで多少なんやかんやといれないと動かない様子。
バージョンとかにもよりそう。
default.conf
default.conf
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
location / {
root /var/www/;
index index.html index.htm;
}
}
我ながら情けないですが、個人的に結構詰まったポイントです。
ローカルでSSL対応する場合
letsencryptとかオレオレ証明書とか用意して、
なんやらかんやらって記事が多くあったのですが、
ローカル開発でのSSL化は僕の場合特に一人の個人開発なので
わざわざ用意しなくても別にクロームの
localhost にアクセスする(安全ではありません)
をクリックで見れればいいや、ぐらいな感じなので
できればpemとかkey用意する手順は横着して省きたい。
ってのがあってもともとは
# ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
# ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# コメントするとnot workですよ。
snakeoil(スネーク・オイル)っていうダミー用なんかってのが用意されてるのかな?
ここコメントしちゃってたのが原因で動かなかったみたいです。
docker-compose up -dやってるとエラーは出力されないのと
buildでも特それらしいエラーも出てないような気がするので
気づくのに時間かかりました。
docker-compose logs -f
ってするか
docker-compose up
で
no “ssl_certificate” is defined for the “listen … ssl”
みたいなエラーが確認できました。
気づいたらそんな事かって感じではありますが
なかなか時間かかってしまった。
最終的に下記のような感じでなんとかなっている様子
server{
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
index index.php index.html;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
laradock
半日ぐらいかけてphp/mysqlとかもやっとこさ動作自体はするようになったのだけども
どうにもlaradockに比べてブラウザ表示の体感がだいぶ重い、あきらかに重い。
多分laradockが何かうまいことやってくてれてるんだろうなーと思は思いつつ
何か面倒になってきたので結局laradockでやってます。
不具合はlaradock自体をcloneしなおしたら治りました。
何となく使ってたdockerの多少の勉強になったので良しとしよう。
laradock便利。
ディスカッション
コメント一覧
まだ、コメントがありません