2017-07-19 4 views
1

私は、サーバーawsサーバでdockerを使用してgolangアプリケーションがpostgresとどのように対話しますか?

で実行されているこの

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

のようなドッキングウィンドウのインスタンスを持っていると私は上記と同じサーバーで実行されているドッキングウィンドウで

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

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

を包んだ私のgolangアプリが動作していない持っていますipが正しくないためです。

私はマックを使用しておりますので、私は、ドッキングウィンドウのPostgresのDBに接続するためのドッキングウィンドウのマシンのIPを使用する必要があるが、私はしないでください

AWSでこれを構成するための良い方法は何ですか?

+0

ドッカーでは、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" 
} 

を単にAWS上のドッキングウィンドウのコンテナにproductionGO_ENV環境変数セットを提供します。