首页 > 其他分享 >构建golang本地编译开发环境

构建golang本地编译开发环境

时间:2022-11-08 20:15:51浏览次数:38  
标签:bin golang 编译 构建 ENV linux PATH local

1 构建golang开发环境

FROM centos:centos7.6.1810
USER root
RUN yum install -y  wget && cd /usr/local/src && wget https://studygolang.com/dl/golang/go1.16.3.linux-amd64.tar.gz && tar -zxvf go1.16.3.linux-amd64.tar.gz -C /usr/local/  
ENV GOROOT=/usr/local/go
ENV GOPATH=/home/gopath
ENV GOBIN=/home/gopath/bin
ENV GOPROXY=https://goproxy.cn,direct
ENV GO111MODULE=on
ENV PATH=$PATH:$GOROOT/bin
ENV PATH=$GOPATH/bin/:$PATH
WORKDIR /my_work_dir
ENV CGO_ENABLED=0
ENV GOOS=linux

2 构建编译二进制产出的golang镜像

2.1 构建镜像

FROM centos:centos7.6.1810
USER root
RUN yum install -y  wget && cd /usr/local/src && wget https://studygolang.com/dl/golang/go1.16.3.linux-amd64.tar.gz && tar -zxvf go1.16.3.linux-amd64.tar.gz -C /usr/local/  
ENV GOROOT=/usr/local/go
ENV GOPATH=/home/gopath
ENV GOBIN=/home/gopath/bin
ENV GOPROXY=https://goproxy.cn,direct
ENV GO111MODULE=on
ENV PATH=$PATH:$GOROOT/bin
ENV PATH=$GOPATH/bin/:$PATH
WORKDIR /my_work_dir
ENV CGO_ENABLED=0
ENV GOOS=linux
CMD ["go", "build", "-o", "app", "./"]

2.2 用法

适合场景有:

  1. 无golang环境,但有docker
  2. 需要交叉编译其它平台的二进制

若你构建的镜像名是go16build:v1, 那么在当前代码库下执行

#可设置环境变量CGO_ENABLED实现动态链接编译 docker run -it --rm -e CGO_ENABLED=1 -v $(pwd):/my_work_dir go16build:v1
docker run -it --rm  -v $(pwd):/my_work_dir go16build:v1

若未构建镜像,可使用我已经构建好的zzc932/go16dev:v1镜像

# zzc932/go16dev:v1镜像内默认的workdir是/paddleflow
docker run -it --rm  -v $(pwd):/paddleflow zzc932/go16dev:v1

标签:bin,golang,编译,构建,ENV,linux,PATH,local
From: https://www.cnblogs.com/nishiliu/p/16870998.html

相关文章

  • 源码编译安装LAMP
    目录:1.LAMP2.Apache数据流向3.安装 Apache(web服务器) LAMPL是linuxcentosApache→静态页面→静态请求(http)PHP服务→处理动态页面→动态请求(http)Myql......
  • 关于如何在Windows下通过Golang调用cmd指令
    太nm操蛋了,我tm弄了两小时。起因目前我的项目中,当并发量提高的时候会出现UDP的bufferqueuefull的情况,我怀疑是因为UDP端口释放太慢导致堆积。于是就打算用golang写一......
  • 基于EDAS OPENAPI构建低成本云原生CICD
    在企业级场景中,EDAS会被集成到客户侧的研发测试的IT流程中形成更加完整的企业IT云化整体解决方案,如对接到客户的CMP多云管理平台,被串联到客户的CICD流水线中,和客户的统一监......
  • 20221107 24. Linux 核心编译与管理
    24.1编译前的任务:认识核心与取得核心源代码“核心(kernel)”是整个操作系统的最底层,他负责了整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制、是否支持LVM......
  • 全生命周期服务加持,鸿蒙世界构建按下加速键
    11月4日-6日,第四届华为开发者大会2022(Together)在东莞松山湖举行。正如其主题“创新照见未来”,HDC2022成为万物互联时代创新的展示场,五大场景的创新体验展现出HarmonyOS所......
  • Crypto++编译使用
    简述Crypto++库是一个用c++编写的密码类库,是一个自由软件。有关它的信息可以访问以下两个网站:Crypto++®LibraryWiki-Crypto++®Library 简述下载使用AES......
  • Golang 实现时间戳和时间的转化
    何为时间戳:时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时......
  • Eclipse_2022_09 版本 反编译插件
      eclipse包地址:https://www.eclipse.org/downloads/packages/截图如下:  最新版的eclipse中自带class反编译功能。  可自行选择对应的反编译插件类型 ......
  • 18行JavaScript代码构建一个倒数计时器
    英文|https://www.sitepoint.com   作者|NilsonJacques​有时候,你会需要构建一个JavaScript倒计时时钟。你可能会有一个活动、一个销售、一个促销或一个游戏。你可......
  • Xmake v2.7.3 发布,包组件和 C++ 模块增量构建支持
    Xmake是一个基于Lua的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了Lua运行时。它使用xmake.lua维护项目构建,相比makefile/CMakeLists.txt,配置语......