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 [アプリ名]
最後に
一連のコマンドをシェルスクリプトなどにして、自動化してもよさそうですね。
この記事に誤りがあるかもしれません。その辺はご了承ください。
本記事で紹介されている方法・手法はあくまでも個人的なものです。