2017-03-27 2 views
1

redis-golangドライバを使用してredisに接続しようとしました。 これは私のdocker-compose.ymlファイルです:ドッカーの作成ファイルを使用してredis接続しようとしたときに接続が拒否されました

version: "3" 

services: 
    driver: 
    build: ./API-Golang 
    command: go run app.go 
    volumes: 
    - ./API-Golang:/app 
    ports: 
     - "8080:8080" 
    depends_on: 
     - db 
     - redis 
    links : 
     - redis 
     - db 
    redis: 
    image: redis 
    container_name: redis 
    ports: ["6379:6379"] 
    db: 
    image: mongo:3.4.2 
    container_name: mongodb 
    ports : ["27017:27017"] 

と、この私がRedisの(API-Golang /データベース/ allSystem.go)に接続しようとするコード:

redisConn := RedisHost{ 
    Address: "localhost:6379", 
    Password: "", 
    DB:  0, 
} 

redisConnection, err := redisConn.Connect() 
if err != nil { 
    panic(err) 
} 

私はlocalhostを変更しようとしましたホストの場合はredisになりますが、それでも動作しません。ここにエラーがあります:

driver_1 | panic: dial tcp [::1]:6379: getsockopt: connection refused 
driver_1 | 
driver_1 | goroutine 1 [running]: 
driver_1 | github.com/Gujarats/API-Golang/database.SystemConnection(0x48) 
driver_1 |  /go/src/github.com/Gujarats/API-Golang/database/allSystem.go:32 +0x3d3 
driver_1 | main.main() 
driver_1 |  /go/src/github.com/Gujarats/API-Golang/app.go:24 +0x34 
driver_1 | exit status 2 

何が悪いと思いますか?

Source Code

答えて

0

これは、私は私はこのような順序を書く問題を解決しないためにdepends_onを書いた愚かです。 docker-compose.ymlファイルのようにホストを適切な名前に変更することを忘れないでください。この場合、redis = redisおよびmongodb = dbです。

私はapp.goで私はredisを呼び出してからmongodbを呼び出すことを忘れています。

1

depends_onを使用する際に注意すべきいくつかのものがあります。

  • depends_onは、Webを開始する前に「準備完了」であることをデシベルとRedisのを待ちません - 彼らは開始されているだけになるまで。サービスが準備されるのを待つ必要がある場合は、この問題の詳細と解決方法についてはControlling startup orderを参照してください。
    • バージョン3では、depends_onの条件フォームはサポートされなくなりました。
  • deploying a stack in swarm modeバージョン3のComposeファイルの場合、depends_onオプションは無視されます。私はdbそれを最初に書いたこの前

    depends_on: 
        - redis 
        - db 
    

+0

upvote私を解決に導くので、D –

関連する問題