当前位置: 首页 > news >正文

上海网站开发建设找哪家51趣优化网络seo工程师教程

上海网站开发建设找哪家,51趣优化网络seo工程师教程,可以制作应用的软件,大连网站制作什么是Docker Compose在微服务盛行的今天#xff0c;我们通常是这么定义Compose的#xff1a;对容器的统一启动和关闭的编排工具。但是我以前还是有个疑惑#xff0c;谁会用Compose在一台服务器上部署多个服务呢#xff1f;干脆直接用单体服务就行了#xff01;直到我遇到… 什么是Docker Compose在微服务盛行的今天我们通常是这么定义Compose的对容器的统一启动和关闭的编排工具。但是我以前还是有个疑惑谁会用Compose在一台服务器上部署多个服务呢干脆直接用单体服务就行了直到我遇到了以下的一个需求让我明白了在一台服务器上不得不用多个服务的时候Compose可以通过sidecar的模式让服务很简单的通过127.0.0.1调用另一个服务需求遇到不合适的语言一个用golang开发的某个项目希望根据学生信息打印学籍学籍表其中一部分如下 go中并不是没有操作word的库但是操作这样一个复杂的word并且填好信息还是有很大难度。所以我们想到了一个实现方案。实现方案1.通过excel定义一个一样的模板2.golang往excel的指定cell里填值这样相对往word里填值就简单很多其中一部分代码xlsx.SetCellValue(Sheet1, C3, student.Major.Name) xlsx.SetCellValue(Sheet1, F3, student.ClassInfo.Name) xlsx.SetCellValue(Sheet1, J3, student.SchoolSystem)xlsx.SetCellValue(Sheet1, B4, student.Name) xlsx.SetCellValue(Sheet1, D4, student.BeforName) xlsx.SetCellValue(Sheet1, F4, student.Gender) xlsx.SetCellValue(Sheet1, H4, student.Nation)xlsx.SetCellValue(Sheet1, B5, student.IdCardNo) xlsx.SetCellValue(Sheet1, F5, student.HomePlace)xlsx.SetCellValue(Sheet1, B6, student.Birthday.Format(20060102)) xlsx.SetCellValue(Sheet1, D6, student.EntranceTime.Format(20060102)) xlsx.SetCellValue(Sheet1, F6, student.JoinTeamTime)xlsx.SetCellValue(Sheet1, B7, student.FamilyAddress) xlsx.SetCellValue(Sheet1, F7, student.HealthStatus)3.最关键的一步把excel转成pdf返给前端供其展示或者打印我在github了没找到golang把excel转成pdf的库有推荐可以留言于是想到了.net里的FreeSpire.Xls库可以很方便实现excel转pdf的功能所以需要有个.net api把go生产并填好的excel转成pdf于是我新建了一个.net webapi项目名定义成pdfprocessor其中定一个Controller[Route([controller])] public class PDFController : ControllerBase {private readonly ILoggerPDFController _logger;public PDFController(ILoggerPDFController logger){_logger logger;}[HttpPost]public async TaskIActionResult HttpPostAsync(){try{Stream stream Request.Body;byte[] buffer new byte[Request.ContentLength.Value];stream.Position 0L;stream.ReadAsync(buffer, 0, buffer.Length);Workbook wb new Workbook();wb.LoadFromStream(stream);Worksheet ws wb.Worksheets[0];var streamReturn new MemoryStream();ws.SaveToPdfStream(streamReturn);return File(streamReturn, application/octet-stream);}catch (Exception ex){_logger.LogError(, ex);return BadRequest(ex.Message);}} }4.部署go项目与.net项目使go语言调用.net api实现excel转化pdf因为这是一个很小的单体项目那么如何使这个部署与调用相对简单就是我需要考虑的问题了这时候我想到了Docker Compose。我可以通过docker-compose同时启动go api和.net api最重要的还是可以让go与.net项目使用同一个network的方式使go api通过127.0.0.1:port来调用.net api拓扑如下 5.go api通过127.0.0.1调用 .net api这样.net api就成了go api的一个sidecar为其服务response, err : http.Post(http://127.0.0.1:6081/PDF, multipart/form-data;boundarymultipart.NewWriter(bytes.NewBufferString()).Boundary(), bytes.NewReader(byteA)) if err ! nil {c.Bad(err.Error())return } defer response.Body.Close() if response.StatusCode ! 200 {data, _ : ioutil.ReadAll(response.Body)c.Bad(string(data))return }pdfFilePth : fmt.Sprintf(./templates/tmp/%s.pdf, uuid.New()) f, err : os.Create(pdfFilePth) if err ! nil {c.Bad(err.Error())return } io.Copy(f, response.Body) c.Ctx.Output.Download(pdfFilePth, data.xlsx)6.docker-compose部署编写go api的dockerfileFROM library/golangWORKDIR /app RUN go env -w GO111MODULEon RUN go env -w GOPROXYhttps://goproxy.cn,direct ADD api/ /app RUN cd /app RUN go mod tidy RUN go build main.go ENTRYPOINT [/app/main] EXPOSE 6080编写.net的dockerfile#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base RUN apt-get update RUN apt-get install -y --no-install-recommends libgdiplus libc6-dev RUN apt-get install -y fontconfig xfonts-utils COPY /pdfprocessor/fonts/ /usr/share/fonts/ RUN mkfontscale RUN mkfontdir RUN fc-cache -fvWORKDIR /app EXPOSE 6081FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY [pdfprocessor/pdfprocessor.csproj, pdfprocessor/] RUN dotnet restore pdfprocessor/pdfprocessor.csproj COPY . . WORKDIR /src/pdfprocessor RUN dotnet build pdfprocessor.csproj -c Release -o /app/buildFROM build AS publish RUN dotnet publish pdfprocessor.csproj -c Release -o /app/publishFROM base AS final WORKDIR /app COPY --frompublish /app/publish . ENTRYPOINT [dotnet, pdfprocessor.dll]编写docker-compose.yaml让goapi与.net api使用同一个networkversion: 3.4services:pdfprocessor:image: pdfprocessorbuild:context: .dockerfile: pdfprocessor/Dockerfiledepends_on:- eduadminnetwork_mode: service:eduadmineduadmin:image: eduadminbuild:context: .dockerfile: api/Dockerfileports:- 6080:6080- 6088:60887.通过docker-compose up -d启动服务查看pdf展示效果最后想说docker-compose真香关注我获取技术分享
http://www.huolong8.cn/news/430487/

相关文章:

  • 做网站彩票代理多少钱啊筑龙建筑资料网
  • 甘肃制作网站营销型网站建设教程视频教程
  • 四川省城市建设培训中心 网站哈尔滨快速建站专业定制
  • 淮滨网站建设公司宁德小程序开发
  • 网站建设公司模版wordpress商城主题模板下载
  • 免费企业网站建设免费房地产销售政策
  • wordpress 登入seo职业发展
  • 上海网站平台建设网新中英企业网站管理系统
  • 建公司网站的详细步骤前端和后端哪个难
  • 网站建设czzmcnwordpress后台编辑主题时提示:抱歉_该文件无法被编辑
  • 农业企业网站建设流程网页托管平台排名
  • 网站建设项目策划书wordpress计数插件
  • 杭州网站设计建立企业网站域名备案需要有网站吗
  • 网站域名好了下一步怎样创建个人网页
  • 网站虚拟旅游怎么做的响应式的网站做优化好吗
  • 西安网站维保公司网络防御中心是什么
  • 南京seo网站管理网站备案成功后怎么
  • 网站开发电脑配置手机网站建设公司电话咨询
  • 网站源码下载500套wordpress模板下载
  • 上海网站推广优化简单的h5免费模板
  • 济南网站建设平台官网网站建设 印花税
  • 标准型网站---北京网站建设网站改版设计注意事项
  • 天津房地产网站建设安装 wordpress多人
  • 中国排名前十的广告公司郑州seo网站管理
  • 网站开发项目源码wordpress制作分类层级
  • 网站举报后还是没封掉wordpress 常用 代码
  • 网站建设公司哪家好?该如何选择一站式媒体发布平台
  • 深圳市房屋管理局官方网站临海手机网站
  • 信息管理系统网站开发教程小米应用商店
  • 太原营销网站建设制作平台域名对网站有什么影响吗