Docker构建Golang项目常见问题

news/2024/5/19 7:14:49

Docker构建Golang项目常见问题

  • 1 Dockerfile
    • 1.1 dockerfile报错:failed to read expected number of bytes: unexpected EOF
    • 1.2 go mod tidy: go.mod file indicates go 1.21, but maximum supported version is 1.17
    • 1.3 是否指定启动文件问题
  • 2 构建及部署

1 Dockerfile

1.1 dockerfile报错:failed to read expected number of bytes: unexpected EOF

可能是docker拉取的镜像版本导致的问题的出现。

解决办法:

  1. 使用docker pull {镜像名称},单独拉取构建时所需的基础镜像。
  2. 更改Dockerfile中的镜像版本。

1.2 go mod tidy: go.mod file indicates go 1.21, but maximum supported version is 1.17

在这里插入图片描述
因为Dockerfile中基础镜像是golang:alpine。查看golang:alpine可以看到里面的golang版本是1.17.5

解决办法:更改Dockerfile中基础镜像为golang:1.21。

1.3 是否指定启动文件问题

FROM golang:1.21 AS builderLABEL stage=gobuilderENV GOOS linux
ENV GOARCH amd64
ENV CGO_ENABLED 0
ENV GO111MODULE on
ENV GOPROXY https://goproxy.cn,directARG AppDirWORKDIR /buildADD ${AppDir}/go.mod .
ADD ${AppDir}/go.sum .
ADD core .RUN go mod tidy && go mod downloadCOPY . .
COPY ${AppDir}/etc /app/etc# 指定启动文件
RUN #cd ${AppDir} && go build -ldflags="-s -w" -o /app/app ./cmd/main.go
# 不指定1
RUN #cd ${AppDir} && go build -ldflags="-s -w" -o /app/app *.go
# 不指定 构建的时候会自己去找.go文件
RUN cd ${AppDir} && go build -ldflags="-s -w" -o /app/appFROM scratchARG AppDir
LABEL xxx.net.service=${AppDir}
LABEL xxx.net.slslog=trueCOPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
ENV TZ Asia/ShanghaiWORKDIR /app
COPY --from=builder /app/app /app/app
COPY --from=builder /app/etc /app/etcCMD ["./app", "-f", "etc/config.yaml"]

2 构建及部署

  1. 构建
docker build -t ucenter-rpc:0.0.1 -f Dockerfile .
  1. Docker创建网络
docker network create --driver=bridge zero_bridge_network
  1. 创建配置文件及日志目录
mkdir -p /opt/soft/go-zero/deploy/ucenter-rpc/etc
mkdir -p /opt/soft/go-zero/deploy/ucenter-rpc/logs
  1. docker-compose
version: "3.1"
services:ucenter_rpc:container_name: dcv3_ucenter_rpc_serviceimage: 镜像restart: on-failureports:- 8080:8080volumes:- /etc/localtime:/etc/localtime:ro- /opt/soft/go-zero/deploy/ucenter-rpc/etc:/app/etc- /opt/soft/go-zero/deploy/ucenter-rpc/logs:/app/logshealthcheck:test: [ "CMD", "curl", "-f", "http://localhost:6470/healthz" ]interval: 1m30stimeout: 10sretries: 3start_period: 40snetworks:default:external:name: go-zero_bridge_network

http://www.mrgr.cn/p/82664727

相关文章

Unity3D 爆火的休闲益智游戏工程源码/3D资源 大合集

Unity3D休闲益智游戏工程源码大合集 一、关卡类游戏工程源码二、跑酷类游戏工程源码三、消除合成类游戏工程源码四、棋牌类游戏工程源码五、RPG(角色扮演)类游戏工程源码六、FPS(射击)类游戏工程源码十、Unity3D工艺仿真六、Unity游戏资源1、Unity3D 吃鸡…

vis.js外部自定义折线图

代码案例<!doctype html> <html> <head><title>Timeline</title><script type="text/javascript" src="https://unpkg.com/vis-timeline@latest/standalone/umd/vis-timeline-graph2d.min.js"></script><lin…

react native 安装app时报错 ”已安装了签名冲突的应用“

1. 问题描述: react native开发完app,手动安装app,报错”已安装了签名冲突的应用“。 或者执行命令安装npx react-native run-android --mode=release,报错2. 解决方法: 直接卸载原来的app发现无效,于是执行: adb uninstall "xxxxx"xxxxx换成你的app名,在这里…

SLS 查询新范式:使用 SPL 对日志进行交互式探索

在构建现代数据和业务系统的过程中,可观测性已经变得至关重要,日志服务(SLS)为 Log/Trace/Metric 数据提供了大规模、低成本、高性能的一站式平台服务,并提供数据采集、加工、投递、分析、告警、可视化等功能,从而全面提升企业在研发、运维、运营和安全等各种场景的数字化…

MySQL 基础语法(2)

文章目录 创建表查看表修改表表数据插入 本文为表结构相关的基础语言库相关的基础语句 创建表 CREATE TABLE table_name ( field1 datatype comment xxx, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;CREATE TABLE&#xff1…

性能测试——压测工具locust——脚本初步编写

User Class 一个用户类代表一个用户(如果你愿意,也可以是一群蝗虫)。Locust 将为正在模拟的每个用户生成一个 User 类的实例。用户类可以定义一些通用属性。on_start 和 on_stop 方法 User和TaskSets可以声明一个on_start和on_stop方法, User:在该用户开始运行时调用on_st…

Qt-饼图示范

1.效果图 2.代码如下 2.1 .h文件 #ifndef PIECHARTWIDGET_H #define PIECHARTWIDGET_H#include <QWidget> #include <QChartView> #include <QPieSeries>#include<QVBoxLayout> #include<QMessageBox> #include <QtCharts>struct PieDat…

记录如何用php做一个网站访问计数器的方法

简介创建一个简单的网站访问计数器涉及到几个步骤,包括创建一个用于存储访问次数的文件或数据库表,以及编写PHP脚本来增加计数和显示当前的访问次数。方法以下是使用文件存储访问次数的基本步骤: 创建一个文本文件来存储计数:在网站的根目录下创建一个名为 counter.txt 的文…

截断堆积柱状图绘制教程

本教程原文链接&#xff1a;截断堆积柱状图绘制教程 欢迎大家转载&#xff01;&#xff01;&#xff01;&#xff01; 本期教程 写在前面 堆积柱状图是柱状图的常见类型之一&#xff0c;也是平时使用概率较高的图形之一。我们前期发布了很多个柱状图的绘制教程&#xff0c;若你…

Linux操作系统·Linux简介

1.世界上第一个完善的网络操作系统 Unix是1969年由美国电话电报公司(AT&T)贝尔实验室的两个工程师所创造的操作系统&#xff0c;它允许计算机同时处理多用户和程序。目前大型政府单位、大型企业、航空公司、金融机构多在使用&#xff0c;价钱昂贵&#xff0c;但性能和稳定性…

js逆向实战之微信公众平台pwd参数解密

网址:https://mp.weixin.qq.com/ 分析过程调出开发者工具,切换到network模块,随便输入一个账号和密码,抓包。看到pwd参数被加密了,接下来就是去找到pwd参数的加密过程。但其实这里可以进行加密方法的猜测,密码处输入123456,抓包。相信有经验的人可以很快的反应出是个md5…

[linux]进程控制——进程终止

一、main函数的返回值 我们在编写C语言的程序时&#xff0c;通常会这样写&#xff1a; int main() {return 0; } 那么我们为什么要返回&#xff08;return&#xff09;0 呢&#xff1f; 其实&#xff0c;main函数也是一个函数&#xff0c;它也会被调用&#xff0c;所以谁调…

python用循环新建多个列表

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 当我们处理数据时&#xff0c;有时候需要创建多个列表以存储不同类型或不同条件下的数据。在…

结对编程心得

结对编程心得 要求如下所示: 小学老师要每周给同学出300道四则运算练习题。 这个程序有很多种实现方式: C/C++ C#/VB.net/Java Excel Unix Shell Emacs/Powershell/Vbscript Perl Python 两个运算符,100 以内的数字,不需要写答案。 需要检查答案是否正确,并且保证答案在 0.…

深度学习| IOU Loss(包含代码实现)

IOU Loss IOUIOU Loss公式代码对比其它Loss IOU IOU&#xff08;Intersection over Union&#xff09;是交并比&#xff0c;用于衡量语义分割任务中预测结果与真实标签之间的相似度。 I O U ∣ X ∩ Y ∣ ∣ X ∪ Y ∣ IOU\frac{|X\cap Y|}{|X\cup Y|} IOU∣X∪Y∣∣X∩Y∣​…

pytest学习-pytorch单元测试

pytorch单元测试 一.公共模块[common.py]二.普通算子测试[test_clone.py]三.集合通信测试[test_ccl.py]四.测试命令五.测试报告 希望测试pytorch各种算子、block、网络等在不同硬件平台,不同软件版本下的计算误差、耗时、内存占用等指标. 本文基于torch.testing._internal 一…

刚交付了智慧园区统一管理平台,前端零代码+后端零代码+物联网平台,完美搭配!(一)

先看下交付效果,2人3个月完成,涉及120个页面,80来个接口,30多个二级模块。其中负责前端的实施工程师,无需懂任何代码编程。其中界面和功能,基本是严格按照墨刀的产品原型实现的: 记录下这个有意思的过程。 我是后端工程师,前端开发懂一点点但也不多,平时开发底层为主,…

vis.js动态样式折线图

代码案例<!doctype html> <html> <head><title>Timeline</title><script type="text/javascript" src="https://unpkg.com/vis-timeline@latest/standalone/umd/vis-timeline-graph2d.min.js"></script><lin…