最近在容器化服务学习的过程中,遇到几个问题,整理如下:
- 在alpine环境中执行go二进制文件时,提示
未识别的“(”
原因是alpine环境中没有安装bash,需要安装bash;
RUN apk add --no-cache --update --virtual .build-deps \
bash \
- 将Mac上编译的go服务包直接拷贝到alpine环境中无法运行
cannot execute binary file: Exec format error
原因是golang环境在编译的时候,会读取go env中的GOOS和GOARCH两个变量,因为我是在Mac上打包的,那么OS值肯定和linux环境不一样了,解决办法是在项目的编译脚本中对这两个环境变量赋值为对应Linux平台的值之后再打包就可以解决跨平台的问题了。
export GOARCH=amd64
export GOOS=linux
- 同样是在执行Go程序的时候报错
unknown time zone Asia/Shanghai
原因是alpine环境中没有对应的时区配置,安装tzdata即可解决
RUN apk update \
&& apk add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone