Keng

qwding

1 minute read

过程是这样的 因需求,写了一个小小的golang项目,但是在打包docker封装时候遇到了很奇怪的问题。 首先是我在linux编译好的程序,想打进alpine镜像(在我本地mac电脑做),发现打进去之后运行不了程序,报/bin/bash : binary not found . google一下,有说版本的,也有说别的的,但是关键是,这个镜像当时打包其他golang binary都没有问题。 然后我在我编译那台机尝试打包镜像,pull一个alpine镜像。bug… 跟docker启动device map有关…. 为了不影响其他应用,忍了把,我不用这个机器了行吧 返回用mac,无意间发现。。。我用mac交叉编译的程序,打到镜像里,居然可以跑,差异加惊喜。不管原因了,能跑就行。 我写的项目里用到了golang1.8的新功能plugin。跑那个模块时候居然报错,plugin:not implement. 懵逼ing… 之前跑都没有问题,为啥交叉编译以后再容器里那个模块就失效了!还报这个错。 到目前为止,感觉是两种环境,两个错误。日了狗一样… 最起码交叉编译那种有错误可查,翻了google没有人报这个错误啊!是没有这个错误。懵逼。。。 查源码吧。。。进到plugin目录,很开心看到只有3个文件,很开心看到文件都很短。什么? 很短?阅读以下。 这TM就结束了?逻辑呢? google一下。原来plugin因为bug这个版本取消了。用1.8beta可以用…. 好吧。下1.8吧。 官网… 没有… 没有beta版本。。。去golangtc.com下载吧。 我去… 超级慢,慢可以忍,最重要的是,下到一半,用chrome下载会挺掉,直接结束了有木有。好的,那我们就找个服务器curl吧,也跟拉便便一样慢,放那里慢慢下去吧。 然后非常不爽的我还换了几个alpine版本,均失败。后来我妥协了,下了一个ubuntu。麻蛋,一下就好使了,我好无语… 仅以此文吐槽下,居然忙了一下午