simple-golang-docker
apitest/apiendpoints.csv 内に書かれたAPIエンドポイント(URI)に対して、GETリクエストを送信し、レスポンスのヘッダからステータスコードのみを抽出する。
Sample
Input
apitest/apiendpoints.csv
id,name,description,uri
1,google,www.google.com,http://www.google.com/
2,yahoo,www.yahoo.co.jp,https://www.yahoo.co.jp/
3,bing,www.bing.com,https://www.bing.com/
Output
# go run apitest/main.go
Status: 200 http://www.google.com/
Status: 200 https://www.yahoo.co.jp/
Status: 200 https://www.bing.com/
Directories
.
├── README.md
├── build
│ └── Dockerfile
├── cmd
│ ├── apitest
│ │ ├── apiendpoints.csv
│ │ ├── example.csv
│ │ └── main.go
│ ├── example.csv
│ ├── go.mod
│ └── go.sum
└── docker-compose.yml
How to use (初回実行手順)
①コンテナ外部で実行
# コンテナイメージのビルド
$ docker-compose build
# コンテナイメージの確認
$ docker images | grep simple_golang_docker
# コンテナ起動
$ docker-compose up -d
# コンテナステータス確認
$ docker-compose ps
# 作成したコンテナに直接アクセス
# (aplineベースのimageのcontainerの場合 /bin/bash ではなく /bin/ash を利用する)
$ docker exec -it simple_golang_docker /bin/ash
②コンテナ内で実行
go.mod の初期化(不要かも)
go mod init
go.mod の更新を行い、 go.sum も生成する
go mod tidy
③コンテナの外部から実行
# 作成したファイルの実行
$ docker-compose exec simple_golang_docker go run hello/main.go
API実行時jのパラメータ
- ヘッダ情報などを記載するならばcsvではなくてYAMLなどの方が良いかも
csv読み込み時のファイルのパス
go run を実行するディレクトリが、ファイル実行時のcurrent directoryになる。 すなわち、
csvtest
┝ file.csv
┗ main.go
のような構成の場合、 go csvtest/main.go 実行時にcsvファイルを読み込む場合のパスはcsvtest/file.csv
となり、 csvtestディレクトリ内で go run main.go 実行時にcsvファイルを読み込む場合file.csv
となる。