我使用AWS Educate的学分,制作了新型冠状病毒感染者地图(个人开发)
办妥的事物
新冠病毒感染地图
采用的技术
-
- フロンエンド
React
Typescript
Nginx
バックエンド
Golang (Gin)
PostgreSQL
インフラ
AWS (EC2, S3, Route53)
Docker (Compose)
API
基础设施成本
如果是学生,只要在AWS Educate注册,就可以获得40美元的信用额。在免费使用期间,如果使用EC2的t2.micro实例,可以免费启动约一个月。同样地,关于RDS也可以在一个月内免费使用。这次只需支付购买的Route53域名(13美元/年)和使用ALB进行https化(我认为在nginx上使用Let’s Encrypt也可以)。
虽然跟这个话题无关,但是,如果你是学生,Github学生套餐可以免费享受许多服务,真的很不错!
部署
我尝试了在ECS上部署,但是没有成功,所以虽然不太优雅,我把Docker安装在EC2上,然后拉取Git代码,最后通过docker-compose up完成了部署。
Dockerfile对于前端和后端分别如下所示。
开发环境
银行端(Golang)
#build stage
FROM golang:latest
WORKDIR /go/src/app
COPY . .
RUN go get -d -v ./...
EXPOSE 8080
生产环境
前端(React + Typescript -> Nginx)
FROM node:12 as builder
WORKDIR /coronamap_japan_front
ADD . .
ENV NODE_ENV=production
RUN yarn install
RUN yarn build
FROM nginx:1.16.0-alpine
COPY --from=builder /coronamap_japan_front/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
ADD nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
node-prune(使ってない.js, .tsのモジュールを消してくれるやつ)使う予定でしたが,yarn buildしたときにTypescriptのエラーが出てしまい断念しました。。。
银行结束(Golang)
#build stage
FROM golang:alpine AS builder
WORKDIR /go/src/app
COPY . .
RUN apk add --no-cache git
RUN go get -d -v ./...
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o /main .
#final stage
FROM alpine:latest
RUN apk --no-cache add ca-certificates
COPY --from=builder /main .
RUN chmod +x ./main
LABEL Name=coronamap_japan Version=0.0.1
ENTRYPOINT [ "./main" ]
EXPOSE 8080
我会努力保持服务器的稳定,不会出现故障。