golang编写的项目,使用alpine制作镜像遇到的一个问题解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang编写的项目,使用alpine制作镜像遇到的一个问题解决相关的知识,希望对你有一定的参考价值。

参考技术A

GraphicsMagick,一款高性能的图片处理工具,由于项目需要,用到它,自然而然用到了关于gm的第三方库 https://github.com/gographics/gmagick 这个库按照作者的提示,要安装GraphicsMagick-devel依赖。
项目写完了,接下来用alpine做为基础镜像,准备制作项目的镜像。
golang项目,是在ubuntu下编写的,编译成二进制文件了,只要把二进制文件放进镜像里即可,遇到的问题有2个
1 容器跑起来,一直报二进制文件no found
我认认真真的确认了文件,以及它的路径,确实是存在的,怎么会报文件找不到呢?!
原来是musl和glibc是兼容的问题,在Dockerfile里要加以下两步

2 Error loading shared library libGraphicsMagickWand-Q16.so.2: No such file or directory
明明按要求安装GraphicsMagick-devel依赖,为啥还报这种错

于是想到了,是不是也要ln做一下软链接呢?于是学着上面的样子在Dockerfile里补上

再跑,问题依旧,莫非是软连接的地址写错了!回到开发的电脑上用ldd命令查看一下

果然,编译后的二进制文件依赖路径是/lib,而不是/lib64

于是,修改Dockerfile里的写法

问题解决,开心:)

参考资料:
https://cloud.tencent.com/developer/article/1419659

docker制作m3u8web播放器镜像基于nginx-alpine镜像

ZY Player Web项目:https://github.com/Hunlongyu/ZY-Player-Web

这是一个开源的m3u8 web播放器。我们基于这个项目进行打包

打包使用的Dockerfile

FROM node:latest as builder
WORKDIR application
COPY . . 
#RUN npm config set registry https://registry.npmmirror.com/
RUN npm install yarn
RUN yarn install
RUN chmod +x node_modules/.bin/tsc
RUN chmod +x node_modules/.bin/vite
RUN yarn build
 
FROM nginx:alpine
WORKDIR /usr/share/nginx/html/
COPY --from=builder application/docs/ /usr/share/nginx/html/ 
CMD nginx -g 'daemon off;'

打包和运行

docker build ./ -t zy-player-web:1.0.0
docker run -p 80:80 zy-player-web:1.0.0

以上是关于golang编写的项目,使用alpine制作镜像遇到的一个问题解决的主要内容,如果未能解决你的问题,请参考以下文章

linux12企业实战 -- 06alpine Linux简介alpine制作jdk镜像jre镜像 Alpine 命令

docker(alpine+golang) 中 hosts 不生效问题解决大全

docker(alpine+golang) 中 hosts 不生效问题解决大全

Docker之Alpine制作镜像且上传至阿里云

alpine 版的jdk环境镜像搭建与运行

基于alpine制作php镜像