次のコードに減らすことができたという問題があります。
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