前提・実現したいこと
golangを用いたapiをdockerで起動しようとしています。
packageを分割した際、go module
を用いました。
コンパイルエラーは無いのですが、ローカルでgo run main.go
を叩く、もしくはdocker-compose up
を叩くとエラーが発生して起動できません。
正しいDocekrfile
とdocker-compose.yml
の記述を教えてください。
発生している問題・エラーメッセージ
docker-compose up
を叩いた際のエラー
api_1 | build command-line-arguments: cannot load github.com/jpskgc/article/api/controller: cannot find module providing package github.com/jpskgc/article/api/controller article_api_1 exited with code 1
該当のソースコード
フォルダ構成
article
ディレクトリでgo mod init article
を叩いています。
article ├ client ├ api │ ├ main.go │ ├ contoroller │ │ └ contoroller.go │ ├ //省略 │ └ Dockerfile ├ nginx ├ go.mod ├ go.sum └ docker-compose.yml
Dockerfile
1FROM golang:latest 2ENV GO111MODULE=on 3WORKDIR /go/src/github.com/jpskgc/article/app 4COPY . . 5RUN go mod download 6RUN go build 7RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 8ENTRYPOINT ["/go/src/github.com/jpskgc/article/app/api"] 9
yml
1version: '3' 2services: 3 api: 4 build: 5 dockerfile: Dockerfile.dev 6 context: ./api 7 volumes: 8 - ./api:/go/src/github.com/jpskgc/article/app 9 depends_on: 10 - db 11 tty: true 12 environment: 13 - AWS_ACCESS_KEY_ID 14 - AWS_SECRET_ACCESS_KEY 15 - MYSQL_USER 16 - MYSQL_PASSWORD 17 - MYSQL_HOST 18 - GO111MODULE
【追記】
main.go
package main import ( "database/sql" "os" "time" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" _ "github.com/go-sql-driver/mysql" "github.com/joho/godotenv" "github.com/jpskgc/article/api/controller" ) func main() { api := router.Group("/api") { api.GET("/articles", func(c *gin.Context) { controller.GetArticleController(c, db) }) api.POST("/post/image", func(c *gin.Context) { controller.PostImageController(c) }) } router.Run(":2345") }
補足情報(FW/ツールのバージョンなど)
・client: react/axios ・api: golang/gin ・web-server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk
以上、お手数ですがご教授いただけると幸いです。よろしくお願いいたします。
追記(2019/08/24)
ローカル環境でgo run main.go
を叩くと正常に起動することは確認できました。
しかしdocker環境 でのdocker-compose up
は相変わらず失敗します。(上記と同じエラーが出ます。)
全体のソースコードをgithubにあげさせていただきましたので、一度ご確認いただけると何より幸いです。
https://github.com/jpskgc/article/tree/try-golang-mod
(branch: try-golang-mod)
回答2件
あなたの回答
tips
プレビュー