フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Docker alipineのnginxにLet's Encryptをインストールする

Dockerfile

  • 自分が作成したファイルは下記となります。このままコピーしても動きません。
FROM alpine:latest

## nginx
RUN apk --update add nginx && rm -rf /var/cache/apk/*
RUN chmod 755 /var/lib/nginx /var/lib/nginx/tmp
RUN mkdir -p /run/nginx
ADD ./frontend/nginx/config.d/default.conf /etc/nginx/conf.d/

## nodejs
RUN apk add --update nodejs nodejs-npm
RUN apk add yarn

## SSL
RUN mkdir -p /etc/letsencrypt/live/www.px-wing.com/
ADD ./frontend/nginx/ssl_key/fullchain.pem /etc/letsencrypt/live/<あなたのドメイン>/
ADD ./frontend/nginx/ssl_key/privkey.pem /etc/letsencrypt/live/<あなたのドメイン>/

## start shell
COPY ./frontend/start.sh /start.sh
RUN chmod +x /start.sh

CMD ["sh", "/start.sh"]

Let's Encryptインストール

  • 最後のコマンドを実行するときにnginxが起動してHTTP通信が行えることが成功する条件です。
apk update
apk add certbot 
apk add openssl 

certbot certonly -n --keep-until-expiring --agree-tos --webroot -w /srv/wwww/src/ -d <あなたのドメイン> -m <メールアドレス>

nginxのdefault.confの設定

server {
  listen 443 ssl;

  ssl_certificate     /etc/letsencrypt/live/<あなたのドメイン>/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/<あなたのドメイン>/privkey.pem;
  server_name www.px-wing.com;

  location / {
    proxy_redirect                      off;
    proxy_set_header Host               $host;
    proxy_set_header X-Real-IP          $remote_addr;
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_read_timeout          1m;
    proxy_connect_timeout       1m;
    proxy_pass                  http://127.0.0.1:3000;
  }

  access_log /var/log/nginx/access.log;
  error_log  /var/log/nginx/error.log;
}

完成

  • SSL状態にすることができました。 f:id:PX-WING:20200526003024p:plain