Docker 新手警報。希望這不是一個愚蠢的問題,但我似乎無法弄清楚發生了什么。我正在嘗試創建一個 docker-compose 文件,該文件創建一個帶有已安裝卷的 mysql 數據庫和一個連接到 mysql 數據庫的 go webserver 應用程序。這是我的 docker-compose 文件:services: db: image: mysql:8.0.2 environment: MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: northernairport ports: - "3306:3306" volumes: - /data:/var/lib/mysql web: depends_on: - db build: . ports: - "8080:8080"雖然我的 go 應用程序似乎無法連接到我的 mysql 數據庫,但我認為“depends_on”將確保這是可能的。我得到的錯誤:panic: dial tcp 127.0.0.1:3306: getsockopt: connection refused誰能告訴我我在這里做錯了什么?謝謝。
2 回答

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
onlydepends_on
控制服務的構建和啟動順序。
您的實際問題更有可能是您使用了從 Web 應用程序到數據庫的錯誤地址。我看到您沒有定義任何網絡,因此您正在使用default
為您的應用程序創建的網絡docker-compose
。這將在默認網絡的 DNS 上按名稱發布每個服務。
因此,您的 Web 應用程序可能應該用作db:3306
數據庫地址,而不是localhost:3306
錯誤127.0.0.1:3306
消息中指示的地址。

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
該ports
部分用于以下列格式將容器端口與主機映射ports (HOST:CONTAINER)
。這意味著您正在嘗試訪問主機的機器,而是配置web
要連接的應用程序db:3306
。
- 2 回答
- 0 關注
- 161 瀏覽
添加回答
舉報
0/150
提交
取消