Amazon LightsailのUbuntu20にDockerでNginxを動かしてみた
最近、GolangのBeegoというフレームワークを使ってWebアプリを作っているのですが、公開するためにAmazonのLightsailを候補にしようかなと思ったので、テスト環境を作ってみることにしました。
手順としては以下の流れかと思うのですが、
- AWSにLightsailのインスタンスを作る
- Docker入れて、build
- Nginxを起動
- 表示されるかテスト
これはどうみても時間結構かかるなって感じなのですが、
ネットの情報のおかげで意外と簡単に出来ました。
1時間位で公開するWebサーバが出来てしまうのは凄い時代ですね。
特に参考にしたサイト
色々なサイトで勉強・確認させていただいたのですが、特に参考になったサイトを紹介したいと思います。
Dockerのインストール
上記サイト「1」の通りに実行すれなうまく行きました。
とりあえず打ち込んだコマンドだけログとして残したいと思います。
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
$ sudo apt update
$ apt-cache policy docker-ce
$ sudo apt install docker-ce
起動していることを確認して
(groupaddでは、dockerはすでに追加されているというエラーが出ました)
$ sudo systemctl status docker
$ sudo groupadd docker
コマンドプロンプトを見ればユーザ名(ubuntu)は分かるんでしょうが、一応確認して、そのユーザを追加します。
$ whoami
$ sudo usermod -g docker ubuntu
dockerを再起動して、
$ sudo systemctl restart docker
$ sudo systemctl status docker
情報確認します。
$ docker info
いきなり実行すると、エラー内容は失念しましたが、socketとかのエラーが出ていたと思います。下記エラーが出ますが
これは再ログインする事で解決し、バージョン情報とか出てくると思います。
Server:
ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "h
ttp://%2Fvar%2Frun%2Fdocker.sock/v1.24/info": dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info
docker-compose
今回は使いませんが、ついでにdocker-composeもインストールしました。
$ sudo apt install docker-compose
$ docker-compose version
NginxをDockerでインストールする
まずはうまく行った時に表示される「test」と書かれたindex.htmlを用意します。
$ cd ~
$ mkdir -p dockertest/html
$ cd dockertest
$ vim html/index.html
test
Dockerfileに設定書いて、ビルドして実行します。
$ vim Dockerfile
FROM nginx
COPY ./html /usr/share/nginx/html
$ docker build -t dockertest .
$ docker run -d --rm -p 80:80 -v $(pwd)/html:/usr/share/nginx/html --name dockertest dockertest
$ docker ps -a
Nginxが有効に立ち上がってるか確認
ローカルで確認
$ curl -X GET http://localhost
外部ネットワークから確認
Lightsailはデフォルトで22番と80番が開けてあるので、特に何もする必要はなさそうです。
管理のメニューからパブリック IPを確認して、ブラウザかもしくは下記で確認。
$ curl -X GET http://XXX.XXX.XXX.XXX
どちらも「test」と表示されれば成功です。