我有一个问题,我设法减少到以下代码:
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
golang:latest
当我在 docker 映像(此处) throught中使用有效的 DB url 构建并运行此 Go 代码时docker-compose
,其中上述程序和 postgres db 位于单独的容器中,程序按预期运行:
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(Sierra,MBP 2015 年中 15 英寸)
- 码头工人 17.06.1 1-ce-mac24