インフラ初心者です。
Golang EchoでHello Worldを返すAPIサーバーをECSを使って立てたいです。
ECRに対してタスク定義をjson(今回はtask-definition.json)でプッシュすると思いますが、他srcのmain.goなどはどこでAWSは知るのでしょうか?
ECRにイメージをプッシュ→タスク定義をプッシュ→クラスターを立ててタスクを実行という流れを経て、タスクは実行されますが、実際にDNSにアクセスすると接続が拒否されます。
タスク定義
docker-go-server $ aws ecs register-task-definition --cli-input-json file://_tools/aws/task-definition.json
Dockerfile
FROM golang:1.13.4-alpine3.10 as build RUN apk add --update ca-certificates git RUN go get github.com/labstack/echo/... WORKDIR /app ADD . /app CMD ["go", "run", "main.go"]
docker-compose.yml
version: '3' services: api: build: context: . image: golang:1.13.4-alpine3.10 command: go run main.go volumes: - .:/app ports: - 1323:1323 tty: true
task-definition.json
{ "family": "go-docker-server", "containerDefinitions": [ { "environment": [], "name": "go-docker-sample", "image": "XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/go-docker-sample:latest", "cpu": 10, "memory": 300, "portMappings": [ { "containerPort": 1323, "protocol": "tcp" } ], "essential": true } ] }
main.go
package main import ( "net/http" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" ) func main() { e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.GET("/", hello) e.Logger.Fatal(e.Start(":1323")) } func hello(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") }
階層構造
docker-go-server $ tree . ├── Dockerfile ├── README.md ├── _tools │ └── aws │ └── task-definition.json ├── docker-compose.yml ├── go.mod ├── go.sum └── main.go
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/11 13:28 編集