作者ripple0129 (perry tsai)
看板Soft_Job
标题Re: [请益] docker容器连线不上问题PartII(悬赏1000p)
时间Sun Sep 8 13:08:48 2019
※ 引述《MOONY135 (脱俗仙子谈无慾)》之铭言:
: ※ 引述《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呢
先观念厘清下
CMD跟ENTRYPOINT 在一个dockerfile内
只能使用一次
超过一次的会被忽略掉
用途是启动时执行
CMD是可替换的command
ENTRYPOINT 是必定执行的command
用范例来说
如果你CMD写了echo hello
docker run myimage
这时候会出现hello
docker run myimage echo hi
这时候会出现hi
若使用ENTRYPOINT 则必定是出现hello
而RUN可使用多次
是在docker build的时候执行
按照你的需求
如果这些command应该是在
docker run时执行
不是在docker build时执行
所以不可以写在RUN内
目前多数习惯的用法是
写一支shell script或是python
在容器启动时执行
譬如你的例子就是写一支档案
entrypoint.sh内容为
#!/bin/bash
echo "entrypoint executing"
http:start
db:reset
db:seed
echo "entrypoint done"
档案内容是什麽再自行决定
毕竟大家无法知道你这些指令做什麽事
然後dockerfile最下方补上
COPY entrypoint.sh:/entrypoint.sh
ENTRYPOINT ["sh", "/entrypoint.sh"]
如果确定entrpoint有成功执行
还是有问题的话
就是你的cobra问题了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.204.151 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1567919331.A.0D6.html
1F:→ MOONY135: 感谢09/08 13:29
2F:→ MOONY135: 目前看logs我觉得应该是有相依的问题 mysql跟我的seed09/08 13:30
3F:→ MOONY135: db 同时被启动 应该是要等mysql完全动起来之後再去做see09/08 13:30
4F:→ MOONY135: d的事情 目前还在找怎样等待mysql被启起来09/08 13:31
5F:→ MOONY135: cobra我在本机上而不是DOCKER上运行的时候没问题09/08 13:35
在entrypoint.sh内测试连线mysql
有成功连线才下指令就可以了
不过逻辑建议转用python写
当然最偷懒的方式就是
Sleep 60啦
※ 编辑: ripple0129 (1.171.204.151 台湾), 09/08/2019 13:38:00
※ 编辑: ripple0129 (1.171.204.151 台湾), 09/08/2019 13:38:55
6F:→ MOONY135: 很想sleep 不过现在不急 想说多研究一点正规方式lol 09/08 13:40
7F:→ MOONY135: 有被m的再多500p(税前)感谢分享 09/08 16:42
8F:→ MOONY135: 等我回家再给 09/08 16:43
9F:推 Amused2Death: 推这篇 09/08 22:10