简体   繁体   English

Docker compose 找不到本地 package

[英]Docker compose can't find local package

So I created REST api and one grpc service in GOlang and now I want to compose it in docker compose.所以我在 GOlang 中创建了 REST api 和一个 grpc 服务,现在我想用 docker 组合它。 My docker-compose looks like this:我的 docker-compose 看起来像这样:

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

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.在我运行 docker-compose 之后,我收到错误,即找不到 go-rest 和 item-service 中的本地包。

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

However when I move docker compose file to go-rest folder, rest app succcessfuly runs but my item service fails.但是,当我将 docker 撰写文件移动到 go-rest 文件夹时,rest 应用程序成功运行,但我的项目服务失败。 As i see problem is in my path to go apps.正如我所见,问题出在我通往 go 应用程序的路径中。

After couple of hours I finally realized what the problem was.几个小时后,我终于意识到问题所在。 My volume path for item-service and go-rest were wrong.我的 item-service 和 go-rest 的卷路径是错误的。 Becuse my docker-compose file is on the same level with folders of projects item-service and go-rest因为我的 docker-compose 文件与项目 item-service 和 go-rest 的文件夹处于同一级别

-go-rest
 -Project files
-item-service
 -Project files
-docker-compose.yaml

and my volume paths were我的音量路径是

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM