本文发布于Cylon的收藏册,转载请著名原文链接~
作为go应用存在二进制文件却不能执行
明明镜像中有对应的二进制文件,但是执行时却提示 not found
或 no such file
或 standard_init_linux.go:211: exec user process caused "no such file or directory"
网上常说都是因为windows换行符编码问题。此处实际问题是该二进制文件是使用动态链接方式编译.
解决方法:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build --ldflags "-extldflags -static"
注意:CGO_ENABLED=0 GOOS=linux GOARCH=amd64
和 cgo_enabled=0 goos=linux goarch=amd64
是有区别的。
保存信息
诸如此类信息都是上述问题
standard_init_linux.go:211: exec user process caused "no such file or directory"
/tmp # ./envoy_end
/bin/sh: ./envoy_end: not found
替换为国内源
RUN sed -i 's@http://dl-cdn.alpinelinux.org/@https://mirrors.aliyun.com/@g' /etc/apk/repositories
基于alpine制作PHP镜像
-
alpine包搜索 https://pkgs.alpinelinux.org/
-
安装依赖库
apk add --no-cache xxx
-
基于php apline镜像自行增加或删除扩展。 offcial-repo
-
增加扩展可以使用
pecl install xxx
如pecl install redis
-
如果不能使用此种方法安装可以使用,git clone 下来在进行编译,编译成功后 docker-php-ext-enable xxx启动扩展。
此中方式制作镜像,常见扩展安装完成后,容器大小可控制在100M左右
参考资料:What is .build-deps for apk add –virtual command?
本文发布于Cylon的收藏册,转载请著名原文链接~
链接:https://www.oomkill.com/2020/09/alpine-trouble-q-and-a/
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。