Docker Compose找不到本地软件包 [英] Docker compose can't find local package
问题描述
所以我在GOlang中创建了REST api和一个grpc服务,现在我想在docker compose中进行编写。
我的docker-compose看起来像这样:
So I created REST api and one grpc service in GOlang and now I want to compose it in docker compose. My docker-compose looks like this:
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_DB: db_1
POSTGRES_USER: postgres
POSTGRES_PASSWORD: tajna
PGDATA: /tmp
volumes:
- ./db/sql/user/1_create.sql:/docker-entrypoint-initdb.d/1-create_user.sql
- ./db/sql/item/2_create.sql:/docker-entrypoint-initdb.d/2-create_item.sql
ports:
- 5432:5432
networks:
apinetwork:
service:
build: ./item-service
command: ["go", "run", "."]
volumes:
- .:/go/src/github.com/ajdinahmetovic/item-service
ports:
- "4040:4040"
depends_on:
- db
links:
- db
networks:
apinetwork:
rest:
image: go-rest
build:
context: ./go-rest
dockerfile: Dockerfile
command: ["go", "run", "main.go"]
volumes:
- .:/go/src/github.com/ajdinahmetovic/go-rest
ports:
- "3000:3000"
depends_on:
- service
networks:
apinetwork:
networks:
apinetwork:
driver: bridge
在我运行docker-compose之后,我收到错误消息,说里面的本地软件包
After I run docker-compose up I get error that local packages that are inside of go-rest and item-service could not be found.
service_1 | item.go:7:2: no Go files in /go/src/github.com/ajdinahmetovic/item-service/db
service_1 | main.go:8:2: cannot find package "github.com/ajdinahmetovic/item-service/logger" in any of:
service_1 | /usr/local/go/src/github.com/ajdinahmetovic/item-service/logger (from $GOROOT)
service_1 | /go/src/github.com/ajdinahmetovic/item-service/logger (from $GOPATH)
service_1 | item.go:8:2: cannot find package "github.com/ajdinahmetovic/item-service/proto/v1" in any of:
service_1 | /usr/local/go/src/github.com/ajdinahmetovic/item-service/proto/v1 (from $GOROOT)
service_1 | /go/src/github.com/ajdinahmetovic/item-service/proto/v1 (from $GOPATH)
ajdinahmetovic_service_1 exited with code 1
rest_1 | /go/src/github.com/ajdinahmetovic/go-rest/routes/item/post.go:9:2: no Go files in /go/src/github.com/ajdinahmetovic/go-rest/db
rest_1 | /go/src/github.com/ajdinahmetovic/go-rest/routes/refreshToken.go:9:2: cannot find package "github.com/ajdinahmetovic/go-rest/httputil" in any of:
rest_1 | /usr/local/go/src/github.com/ajdinahmetovic/go-rest/httputil (from $GOROOT)
rest_1 | /go/src/github.com/ajdinahmetovic/go-rest/httputil (from $GOPATH)
ajdinahmetovic_rest_1 exited with code 1
$ b退出
$ b
但是,当我将docker compose文件移动到go-rest文件夹时,rest app成功运行,但是我的项目服务失败。如我所见,问题出在我开发应用程序的道路上。
However when I move docker compose file to go-rest folder, rest app succcessfuly runs but my item service fails. As i see problem is in my path to go apps.
推荐答案
几个小时后,我终于意识到问题出在哪里。
我用于项目服务和休息的音量路径错误。
因为我的docker-compose文件与项目item-service和go-rest项目的文件夹处于同一级别
After couple of hours I finally realized what the problem was. My volume path for item-service and go-rest were wrong. Becuse my docker-compose file is on the same level with folders of projects item-service and go-rest
-go-rest
-Project files
-item-service
-Project files
-docker-compose.yaml
,我的音量路径为
volumes:
- .:/go/src/github.com/ajdinahmetovic/go-rest
volumes:
- .:/go/src/github.com/ajdinahmetovic/item-service
他们无法访问我的项目文件夹,因此需要将其更改为
They were not able to acces my project folder so they need to be changed to
volumes:
- .:/go-rest
volumes:
- .:/item-service
这篇关于Docker Compose找不到本地软件包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!