看板 Soft_Job 關於我們 聯絡資訊
※ 引述《MOONY135 (脫俗仙子談無慾)》之銘言: : 最近在研究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 繼續第二問 想學的是code first的方式 用的是spf13/cobra這個套件 他可以根據你對專案下的參數去決定要啟用甚麼服務 我想把create table 跟 seed一點資料進mysql這兩件事情在啟動服務之前先做好 (因為怕orm模型有變動 所以分開到其他專案這樣會很麻煩) 我的dockerfile最後是這樣寫的 RUN ["db:reset"] RUN ["db:seed"] CMD ["http:start"] build容器會卡在RUN ["db:reset"]這一段 也試過 CMD ["db:reset","db:seed","http:start"] 也都不行 是不是我想法不太對呢? 其實都是對另外一個mysql容器做事情 還是我需要用run and sleed呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.180.20 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1567908355.A.280.html
MoMoShota: 我想你應該是要用 entrypoint 這個功能? 09/08 11:24
sextitanic: 用 supervisor 呢? 09/08 13:17
錯誤logs是這樣 Creating mysql-db ... done Creating unicorn-go_rx0_1 ... done Attaching to mysql-db, unicorn-go_rx0_1 mysql-db | [Entrypoint] MySQL Docker Image 5.7.27-1.1.12 rx0_1 | [email protected] rx0_1 | DEBU[2019-09-08 04:55:52] (.go/pkg/mod/github.com/spf13/[email protected]/command.go:914) generate default data. mysql-db | [Entrypoint] Starting MySQL 5.7.27-1.1.12 rx0_1 | DEBU[2019-09-08 04:55:52] (.go/src/moony/unicorn-go/cmd/context.go:22) root:123456@tcp(mysql:3306)/rockman?charset=utf8&parseTime=true&loc=UTC&multiStatements=true rx0_1 | ERRO[2019-09-08 04:55:52] (.go/src/moony/unicorn-go/cmd/context.go:22) dial tcp 172.20.0.2:3306: connect: connection refused rx0_1 | panic: Database connection failed. logs看起來rx0_1跟mysql-db是並行啟動 (i.e.當我開始db:reset的時候 mysql還沒啟動好) 然後我又看到這篇文章 https://reurl.cc/Ob1may 不过需要注意的是, depends_on 不会等到 db 和 redis 容器 ready 再启动,web 容器 仅仅等到 redis 和 db 容器启动就开始启动。具体可参考官网启动顺序了解。 看起來像是依賴問題 所以根據depends_on找到下面文章 https://reurl.cc/yyZAjM depends_on: rabbit: condition: service_healthy 但版本3好像已經不支援了 這邊會跳 depends_on contains an invalid type, it should be a string 目前為止做到這步 看起來我應該是要等到mysql的容器 完全啟動之後再去seed data 應該是卡在相依性這邊(?) ※ 編輯: MOONY135 (123.194.180.20 臺灣), 09/08/2019 13:34:46