3

次のコードに減らすことができたという問題があります。

package main

import (
    "fmt"
    "github.com/jmoiron/sqlx"
    _ "github.com/lib/pq"
    "os"
)

func main() {
    addr := os.Getenv("DB")
    fmt.Println("Postgres addr: " + addr)

    _, err := sqlx.Connect("postgres", addr)

    if err != nil {
        fmt.Println("Could not connect...")
    } else {
        fmt.Println("Connecting successful")
    }
}

コードとその他の説明を含むレポを次の場所に設定しました。

https://github.com/mraxus/mystery-golang-alpine

上記のプログラムと postgres db の両方が別のコンテナーにある docker イメージ (ここではgolang:latest) throughtで有効な DB url を使用してこの Go コードをビルドして実行すると、プログラムは期待どおりに実行されます。docker-compose

build_1     | Postgres addr: postgres://postgres@postgres/postgres?sslmode=disable
build_1     | Connecting successful

docker-composeただし、ベース イメージを使用して同じセットアップ () で同じプログラムを実行するとalpine:latest、プログラムは sqlx.Connect() でスタックします。

alpine_1    | Postgres addr: postgres://postgres@postgres/postgres?sslmode=disable

これがなぜなのかわかりません。あなたは知っていますか?私はプロジェクトをセットアップして、他の人が私と同じ問題を再現して取得できるかどうかを確認しました。

https://github.com/mraxus/mystery-golang-alpine

この問題を解決するのに役立ついくつかの洞察を聞くのが大好きです.

私のシステムの詳細:

  • macOS 10.12.6 (シエラ、MBP Mid 2015 15 インチ)
  • ドッカー 17.06.1 1-ce-mac24
4

1 に答える 1