网站建设步骤电脑,企业所得税25%怎么计算,管网建设是什么意思,iis添加网站ip地址事情是这样的。
在我负责的golang项目中#xff0c;使用硬代码验证某块逻辑。比如#xff1a; 于是#xff0c;为了解决硬代码的问题#xff0c;我制作了表格工具#xff1a;【开源项目】Excel数据表自动生成工具v1.0版 – 经云的清净小站 (skycreator.top)。
使用表格工…事情是这样的。
在我负责的golang项目中使用硬代码验证某块逻辑。比如 于是为了解决硬代码的问题我制作了表格工具【开源项目】Excel数据表自动生成工具v1.0版 – 经云的清净小站 (skycreator.top)。
使用表格工具可以自动将excel文件生成golang数据表代码通过代码可以方便地读取表格中的数据。本地测试没有任何问题于是上传gitlabjenkins流水线打包生成。
服务器启动后逻辑并没有按照计划进行。通过多次调试发现居然是表格资源没打包到镜像中。
好吧我一个游戏程序员还没习惯使用docker以为这些表格都是自然而然打包进镜像的。于是开始研究Dockerfile文件。
在对Dockerfile中的每个指令了解一些后查看我们项目的Dockerfile。在我们使用的微服务架构go-zero中Dockerfile存在于每个微服务的根目录下和main文件平级。
其中的一个微服务Dockerfile如下所示其中隐去了公司项目属性
FROM golang:alpine AS builderLABEL stagegobuilderENV CGO_ENABLED 0
ENV GOPROXY https://goproxy.cn,direct
RUN sed -i s/archive.ubuntu./mirrors.aliyun./g /etc/apk/repositoriesRUN apk update --no-cache apk add --no-cache tzdataWORKDIR /buildADD go.mod .
ADD go.sum .
RUN go mod download
COPY . .
COPY ../deploy/DataTable /app/server/api/deploy/DataTable #我加的RUN go build -ldflags-s -w -o /app/api server/api/api.goFROM scratchCOPY --frombuilder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --frombuilder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
COPY --frombuilder /app/server/api/deploy/DataTable /app/server/api/deploy/DataTable #我加的
ENV TZ Asia/ShanghaiFROM ubuntu:18.04
RUN apt-get update apt-get install -y lua5.3
RUN ln /usr/bin/lua5.3 /usr/bin/luaWORKDIR /app
COPY --frombuilder /app/api /app/api
COPY --frombuilder /app/server/api/deploy/DataTable /app/server/api/deploy/DataTable #我加的CMD [/app/api, -f, /app/etc/api.yaml]上面第17、25、35行是我加的不过我认为或许只需要加一行就可以。由于进度紧张后面有时间我再来改。若是有读者了解一眼可以看出问题可以直接给我留言告诉我怎么加。先谢过了
这个表格我希望可以持久化这样容器内外可以共享同一份数据因此在docker-compose文件中在该微服务的Server下我加入了持久化其余的部分就不传了 volumes:- ./deploy/DataTable:/app/server/api/deploy/DataTable
再次上传gitlabjenkins编译。结果还是没成功表格加载依然失败。
到底怎么回事呢
我在阿里云服务器上进入容器环境一看究竟。
docker exec -it api sh
好吧。容器里确实没有这个表格但因为docker-compose中设置了持久化所以DataTable是有的。
于是我在本地windows上而不是阿里云上直接生成镜像查看镜像中的DataTable文件夹里面是有表格文件的。 那么问题到底出在哪里呢
我开始以为是COPY因为拷贝了父目录../而没有将表格复制过去但通过在父目录运行docker-compose可以解决这个问题。
就在我快要放弃时我看了看jenkins的流水线。
sh ssh root192.168.0.101 IMAGE_TAG_VERSIONv${BUILD_ID} docker-compose -f /data/server/api-deploy/api-deploy/docker-compose-release.yaml up -d
原来如此我恍然大悟原来上任运维写的流水线最终直接调用的是阿里云服务器上的docker-compose文件所以Dockerfile的COPY也是在那个服务器上做的操作。
于是我将excel文件拷贝到阿里云服务器docker中也就有了表格运行逻辑也正确了。
这块未来我要优化不直接把数据手动拷贝到阿里云服务器也应该可以。