作者MOONY135 (脫俗仙子談無慾)
看板Soft_Job
標題[請益] docker容器連線不上問題
時間Sat Sep 7 18:02:51 2019
最近在研究docker 容器
想用寫好的go去連mysql
這是我的docker-compose檔
https://pastebin.com/embed_js/2x5MgY2q
這是go連線到mysql的設定
https://pastebin.com/embed_js/KrnH2DZ7
當我docker-compose up之後
我從終端機連到mysql 用root權限是可以進去的
也看到已經create好的db
不過從專案那邊要連過去的時候(我開api 再用postman去打那隻api)
專案的log會跳出 mysql connect refused
但我已經在初始化db的時候去update root可以從其他ip連線進來
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost' LIMIT 1;
flush privileges;
CREATE DATABASE IF NOT EXISTS rockman;
請問有人可以幫幫忙嗎XD 1000p(不含稅)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.180.20 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1567850573.A.D45.html
1F:推 BigTounge: 應該是config的port錯了 應該是3306 09/07 18:23
我改3306 但是在BUILD的時候
說這個port被佔用了 所以改回33060
改完之後還是拒絕連線
不過我直接把整個docker image reset之後
倒是知道我之前vendor那邊有很多問題重抓了
2F:推 BigTounge: host應該可以改用hostname代替ip 09/07 18:31
3F:推 BigTounge: 直接改成mysql 09/07 18:33
4F:→ MOONY135: 好 我等下試試看 09/07 18:43
5F:→ sextitanic: 有用 network 就不用 links 了 09/07 20:37
6F:→ sextitanic: composer version 可以改用 3 09/07 20:38
7F:→ justben: 那個 ... 密碼有設對嗎 09/07 20:53
8F:推 ripple0129: database.host改mysql,database.port改3306 09/07 21:05
3306在BUILD的時候說被占住了
9F:→ MOONY135: 密碼有對 我有用exec進去看過 可以進去 09/07 21:20
3306會跳這個
ERROR: for mysql-db Cannot start service mysql:
driver failed programming external connectivity on
endpoint mysql-db
(9714bb03b36d0bf70b39c08995ebc4bda51716af934a476e6edc20a7d9fe43e4):
Error starting userland proxy:
listen tcp 0.0.0.0:3306: bind: address already in use
※ 編輯: MOONY135 (123.194.180.20 臺灣), 09/07/2019 21:50:22
10F:推 ripple0129: go連接3306是mysql那台容器的3306不是你本地的3306, 09/07 22:51
11F:→ ripple0129: 跟衝突沒關係,你甚至可以直接移除掉docker-compose m 09/07 22:51
12F:→ ripple0129: ysql的port設定 09/07 22:51
13F:→ MOONY135: 我有確定把DOCKER的images全清了 再docker-compose up 09/07 22:53
14F:→ MOONY135: 不過還是會跳這個 這樣是port設定有問題嗎 09/07 22:53
15F:推 googoo1102: 上面的意思是你要用mysql container的IP連 09/07 23:34
更新進度 我把我電腦裡面的MYSQL關掉之後
用POSTMAN打本地端的專案(在容器中運行)就可以動了
暫時ok了 但還有其他咬問題 可是算前進一大步了
到這邊上面有推文的一個500p 稅前 感謝大家
※ 編輯: MOONY135 (123.194.180.20 臺灣), 09/08/2019 00:01:43
16F:推 s77485p: 他都在同一個網段下面了,應該不用知道mysql server的ip 09/08 00:02
17F:推 s77485p: 然後記得好像是用容器名稱當作ip位置 09/08 00:05
19F:→ s77485p: ker-compose.html 可以參考看看 09/08 00:05
20F:→ s77485p: 啊抱歉忘記縮網址 09/08 00:05
21F:推 BigTounge: 是go的config改 不是docker-compose的port 09/08 00:36
22F:推 BigTounge: docker-compose裡的port是容器對應本機 09/08 00:43
23F:→ BigTounge: port會衝突就是你本機3306已經有在使用 09/08 00:44
24F:→ BigTounge: 所以才開不起來 09/08 00:44
25F:推 BigTounge: 收到你的P幣了 謝謝 09/08 01:04
26F:推 ckmonkey06: 可能是因為你本機上已經有mysql 所以3306已經被佔用了 09/09 00:50
27F:→ badboy821022: docket-compose mysql 設定那邊做port mapping啊 33 09/11 11:52
28F:→ badboy821022: 06:本機沒在使用的port 09/11 11:52