本文发布于Cylon的收藏册,转载请著名原文链接~

作为go应用存在二进制文件却不能执行

明明镜像中有对应的二进制文件,但是执行时却提示 not foundno such filestandard_init_linux.go:211: exec user process caused "no such file or directory"

网上常说都是因为windows换行符编码问题。此处实际问题是该二进制文件是使用动态链接方式编译.

解决方法:

1
CGO_ENABLED=0  GOOS=linux  GOARCH=amd64 go build --ldflags "-extldflags -static"

注意:CGO_ENABLED=0 GOOS=linux GOARCH=amd64cgo_enabled=0 goos=linux goarch=amd64 是有区别的。

保存信息

诸如此类信息都是上述问题

1
2
3
4
standard_init_linux.go:211: exec user process caused "no such file or directory"

/tmp # ./envoy_end 
/bin/sh: ./envoy_end: not found

替换为国内源

1
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 xxxpecl install redis

  • 如果不能使用此种方法安装可以使用,git clone 下来在进行编译,编译成功后 docker-php-ext-enable xxx启动扩展。

此中方式制作镜像,常见扩展安装完成后,容器大小可控制在100M左右

参考资料:What is .build-deps for apk add –virtual command?

本文发布于Cylon的收藏册,转载请著名原文链接~

链接:使用alpine为基础镜像Q&A

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。