我使用AWS Educate的学分,制作了新型冠状病毒感染者地图(个人开发)

办妥的事物

新冠病毒感染地图

Screen Shot 2020-02-26 at 23.09.43.png

采用的技术

    • フロンエンド

React
Typescript
Nginx

バックエンド

Golang (Gin)
PostgreSQL

インフラ

AWS (EC2, S3, Route53)
Docker (Compose)

API

Twitter

基础设施成本

如果是学生,只要在AWS Educate注册,就可以获得40美元的信用额。在免费使用期间,如果使用EC2的t2.micro实例,可以免费启动约一个月。同样地,关于RDS也可以在一个月内免费使用。这次只需支付购买的Route53域名(13美元/年)和使用ALB进行https化(我认为在nginx上使用Let’s Encrypt也可以)。

Screen Shot 2020-02-26 at 23.36.14.png

虽然跟这个话题无关,但是,如果你是学生,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

我会努力保持服务器的稳定,不会出现故障。

广告
将在 10 秒后关闭
bannerAds