Minaminの日記

趣味を記事にしてる。

HerokuでWebサーバ構築してみる

こんにちは。みなみんです。

今回は、Heroku + Nginx + DockerによるWebサーバを構築してみた。

目次

 

用いる環境

  • Heroku
  • Nginx (Dockerで構築)
  • Docker
  • WSL (Windowsで構築する場合)
    • Dockerを稼働させる上で必要。

 

構築方法

Herokuのアカウントを用意する

各自で作っておきましょう。簡単です。

 

Heroku CLIを用意しておく

Heroku公式サイトからインストールしておきましょう。

 

Dockerを用意しておく

同様に公式サイトからダウンロード・インストールを終わらせ、起動が出来る事を確認します。

また、Windows版の場合ではWSLの導入も必要になります。

 

Herokuサーバにデプロイするファイルを用意する

必要最低限のファイルを用意する。

  • Dockerfile
  • heroku.yml
  • nginx.conf
  • html/index.html

Dockerfile

 
FROM nginx

ENV PORT=8080
COPY html /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf

CMD sed -i -e 's/$PORT/'"$PORT"'/g' /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'
    

 

heroku.yml


build:
    docker:
    web: Dockderfile

 

nginx.conf


server {
    listen $PORT;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

index.html


Hello World!

index.htmlは


[現在のディレクトリ]/html/index.html

に保存します。

 

コンテナの作成とHerokuサーバへのデプロイ

Dockerが起動していて、「ENGINE RUNNING」の状態になっているのを確認してから、
PowerShellコマンドプロンプト、ターミナルで以下の一連のコマンドを実行します。


cd [用意したファイルがあるディレクトリ]
heroku create [アプリ名]
heroku login
heroku stack:set container --app [アプリ名]
heroku container:login
heroku container:push web --app [アプリ名]
heroku container:release web --app [アプリ名]

 

最後に

一連のコマンドをシェルスクリプトなどにして、自動化してもよさそうですね。

 

 

 

この記事に誤りがあるかもしれません。その辺はご了承ください。

本記事で紹介されている方法・手法はあくまでも個人的なものです。