尝试将Sapper部署到AWS Fargate上

有一些海外网站上有关将Sapper进行Docker化并部署到Google Cloud Run的文章,但我希望能够在AWS的服务上实现这一点,所以挑战了一下。

这篇关于使用 AWS Fargate CLI + Terraform 在本次部署中运行 Docker 容器的简易教程非常有帮助!如果您没有使用过 Terraform 和 Fargate,请务必先查看这篇文章!

构成

    • Terraform

 

    • Fargate CLI

 

    Sapper

安装Terraform和Fargate CLI。

从Homebrew安装

brew install terraform
brew install fargatecli

新建Sapper项目

npx degit "sveltejs/sapper-template#rollup" my-app
cd my-app
npm install
npm run dev & open http://localhost:3000

创建Sapper的Dockerfile。

FROM mhart/alpine-node:12

WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production

FROM mhart/alpine-node:slim-12

WORKDIR /app
COPY --from=0 /app .
COPY . .

EXPOSE 3000
CMD ["node", "__sapper__/build"]

请创建一个名为”main.tf”的文件。

由于这个配置几乎与我参考的AWS Fargate CLI + Terraform操作Docker容器的简单教程相同,所以我会省略这部分。

将应用程序部署到Fargate

terraform init
terraform apply
fargatecli lb create sample_app --cluster sample_app  --port HTTP:80 --security-group-id `terraform output sample_app_lb_security_group` # ロードバランサーの作成
fargatecli service create sample_app --cluster sample_app --lb sample_app --num 1 --port HTTP:3000 --cpu 256 --memory 512 --security-group-id `terraform output sample_app_ecs_security_group` --env KEY=VALUE # サービスの作成 環境変数を使ってる場合は--envで環境変数を作成時に指定できる。

如果在创建服务时不指定选项,则将以最小配置进行创建。

查看LB的状态

fargatecli lb list --cluster sample_app # STATUS Activeになればサイトが表示されています。

如果状态为“正在配置”,请等待一段时间后再次确认。

添加环境变量后。

fargate service env set sample_app --env APP_KEY=APP_VALUE

删除

fargatecli service scale sample_app 0 --cluster sample_app
fargatecli service destroy sample_app --cluster sample_app
fargatecli lb destroy sample_app
terraform destroy

最后

我成功地将应用程序简单地部署到Fargate上。
如果可能的话,希望能结合CircleCI进行测试和自动部署,如果能做到的话,我想写一篇文章。

广告
将在 10 秒后关闭
bannerAds