2017-07-19 155 views
1

我有這樣golang應用程序如何在aws服務器中使用docker與postgres對話?

docker run --name my-db-name -e POSTGRES_PASSWORD=mysecretpassword -d postgres:latest 

碼頭工人,例如在服務器

運行,我有我的golang應用程序由碼頭工人裹在同一臺服務器

func main() { 
    db, _ := sql.Open("postgres", "postgres://postgres:@192.168.99.100:5432/postgres?sslmode=disable") 

    http.HandleFunc("/test", handler) 
    http.ListenAndServe(":8080", nil) 
} 

以上運行不工作因爲IP不正確。

由於我使用的是Mac,我需要使用泊塢窗機的ip連接到泊塢窗的Postgres數據庫,但在AWS我不

什麼是配置一個很好的辦法嗎?

+0

在Docker中,您可以設置(虛擬的,缺乏更好的單詞)網絡,它與DNS服務器一起提供。之後,您可以使用'my-db-name'來訪問Postgres。閱讀[相應文檔](https://docs.docker.com/engine/userguide/networking/),然後在http://superuser.com上詢問是否有問題。 –

+0

還有[遺留鏈接功能](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/)(但它很快就會被棄用,誰知道),這對於這種情況非常方便。 – Lery

回答

0

您是否在問如何爲您的本地開發和AWS配置不同的環境?

如果是這樣,你可以使用環境變量是這樣的:

env := os.Getenv("GO_ENV") 
dbIP := "DOCKER_MACHINE_IP" 
if env == "production" { 
    dbIP = "AWS_POSTGRES_IP" 
} 

,只需提供GO_ENV環境變量設置爲production對AWS的泊塢窗容器。

相關問題