2017-03-27 1 views
1

redis-golang 드라이버를 사용하여 redis에 연결하는 동안 문제가 발생했습니다. (API-Golang/데이터베이스/allSystem.go)도커 작성 파일을 사용하여 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"] 

내가 시도 곳이 코드는 레디 스에 연결할 수 : 이 내 docker-compose.yml 파일입니다

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 

잘못된 것이 있습니까? depends_on 사용하는 경우

Source Code

답변

0

이 내가 이런 식으로 순서를 작성하는 문제가 해결되지 순서로 depends_on을 쓴 바보입니다. docker-compose.yml 파일 에서처럼 호스트를 적절한 이름으로 변경하는 것을 잊지 마십시오. 이 경우 redis = redis 및 mongodb = db입니다.

저는 app.go에서 redis를 먼저 호출 한 다음 mongodb를 호출한다는 것을 잊었습니다.

1

은주의해야 할 몇 가지가 있습니다

  • depends_on는 DB 기다리지 않습니다 및 레디 스 웹을 시작하기 전에 "준비"로 -가 시작된 때까지만 . 서비스 준비가 완료 될 때까지 기다려야하는 경우이 문제와 해결 방법에 대한 자세한 내용은 Controlling startup order을 참조하십시오.
    • 버전 3은 depends_on의 조건 형식을 더 이상 지원하지 않습니다.
  • deploying a stack in swarm mode 버전 3 작성 파일을 사용하는 경우 depends_on 옵션이 무시됩니다. 내가 db 먼저 쓴이 전에

    depends_on: 
        - redis 
        - db 
    

    :

+0

upvote 당신이 나를 해결책으로 인도하기 때문에 : D –

관련 문제