AWS, Docker詳しい方ぜひお願いします
勉強していること
AWS、Dockerを独学で勉強していますが、使い方や根本的な所がよく分かっておらず困っています。
困っていること・サポートしてほしいこと
PHP/Laravelで作成したwebアプリをdocker環境に移行してAWSへデプロイしたいのですが、AWSの何のサービスを利用するか、など本当によく分からず困っています。
AWS、Dockerを独学で勉強していますが、使い方や根本的な所がよく分かっておらず困っています。
PHP/Laravelで作成したwebアプリをdocker環境に移行してAWSへデプロイしたいのですが、AWSの何のサービスを利用するか、など本当によく分からず困っています。
はじめまして、Webエンジニアのざこぷろと申します。
こちらですが、すでにDockerのコンテナイメージのビルド手順自体が整っていればあとは
の2ステップで可能です。
詳細な手順等についてのサポートが必要でしたらメッセージからでも一度ご相談いただければと思います。
ご返信ありがとうございます。
まず最初のステップとしてEC2上でDocker環境を構築するという事ですね。
まず最初のステップとしてEC2上でDocker環境を構築するという事ですね。
こういった形でも実現は可能ですが、最近ですとWindowsやMacOS上でもDockerの利用が可能なためDocker環境の構築&イメージのビルドは手元のPC上で行う、またはCIで行うのが一般的ではあります。(複数の環境に対して利用できて便利なため)
個人的な所感ですが、AWSでDockerを利用することにあまりメリットを感じません。
AWSではスペックの高くないインスタンスはある程度無料枠で利用できますので、無料で使えない高額なハイスペックインスタンスにすべてをぶっこむより、機能ごとに役割分担させて無料で使えるインスタンスを寄せ集めて軍団に仕立て上げるほうがはるかに効率的と思えるからです。
AWSの主軸はEC2だと思います。
EC2はサービスメニューの左上にあるコンピューティングの一番上にあるやつです。
まずは、WEBサーバー用ににEC2インスタンスを立ち上げます。
次にRDSでデータベースインスタンスを立ち上げます。
(RDSインスタンスはお金がかかるので、コストを抑えるならあえてEC2無料枠でDBをインストールしてDB専用インスタンスを立てます)
もし、SSL対応をしたい、ロードバランシングしたいならElastic Load Balancerを使います。
RDS、NATGateway、ElastiCacheあたりを避けて、ひたすらEC2の無料枠を最大限活用していけば、そこそこ性能を出せる格安環境が構築できると思います。 AWSの提供するサービスはもっといろいろありますが、たぶん多くのサービスはあまり気にする必要もないかと思います。
EC2のAmazonLinuxでDockerCEを先日(1~2か月前の話)自分もトライしましたが、依存パッケージのバージョンなどが合わなくて躓きました、それはもう盛大に。
ローカルでの開発環境にDockerを使い、運用にはAWSで無料枠をフル活用したサーバー軍団をあてる、使い分けのほうがいいように思いまする。
コメントありがとうございます。
初心者の私には想像し得なかった使い方もあるんですね。
私と同じ初学者でruby on railsを利用して学習されている方々の情報を拾ううちに、
AWSにDocker使ってデプロイ、という情報にだけたどり着いたので、
AWSでDockerを利用するメリットがあまりない、という判断すら自分で出来ずそのまま
取り組んでいる形になってしまってます。
PISARA様の仰る使い分けを意識して勉強してきたいと思います。
AWSでDocker(コンテナ)を使いたい場合、たくさんの選択肢(サービス)があります。
Web系企業ではEKSと言ったOSSのk8sベースのマネージド・サービスを使うことが増えつつあるのが最近の流行りですが、ECSというサービスもあります。
こちらはAWS独自のプラットフォームではありつつも、EC2でコンテナを動かす方法以外にコンテナ基盤をマネージドに寄せられるFargateというのもありますので、AWSが得意だったり、インフラの面倒を見たくないけど、ほかサービスとの連携をやりたい人には最適なサービスです。
これ以外にコンテナをベースとしたサービスには、HerokuのようなElasticBeanstalkがあったり、
WebサービスではなくてAPIやバッチのように使いたければ、LambdaやAWS Batchなんかもあります。
一口にAWSとDocker(コンテナ)というと、何が最適なのかは利用環境や目的により大きく変わります。
まずは、AWSのEC2をベースとしたDockerにトライし、Laravelを使ったAPIであればLambda等を使ってみて、余力があればECSやEKSに挑戦していけると、AWS環境におけるコンテナサービスの概要が理解できるのではないでしょうか。
この過程でもしかしたらわざわざDockerを使うメリットを感じないこともあるかもしれませんが、それも1つの選択肢です。
まだまだEC2ベースの環境のほうが世の中は多いですから、どちらも理解できるとより選択肢が広がるかと思います。
ご参考になれば幸いです。
EC2で普通にLaravel構築→EC2 DockerでLaravel構築→ECSでデプロイ的なステップ手順ですかね?(多分)