2017-03-27 126 views
1

我嘗試使用redis-golang驅動程序嘗試連接到redis時出現問題。 這是我的docker-compose.yml文件:嘗試使用docker撰寫文件連接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不是爲了我寫固定的順序是這樣的問題:

depends_on: 
    - redis 
    - db 

本我寫的第一db之前。並且不要忘記像在docker-compose.yml文件中一樣將主機更改爲適當的名稱。在這種情況下,redis = redis和mongodb = db

我忘了,在app.go中,我先調用redis然後調用mongodb。

1

使用depends_on時,有幾件事情需要注意的:

  • depends_on不會等待DB和Redis的是起始網前的「準備」 - 只有等到他們已開始。如果您需要等待服務準備就緒,請參閱Controlling startup order瞭解有關此問題的更多信息以及解決此問題的策略。
    • 版本3不再支持depends_on的條件形式。
  • 當使用版本3撰寫文件的deploying a stack in swarm mode時,將忽略depends_on選項。
+0

upvote因爲你把我引向解決方案:D –