前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu Golang 编译 + Docker部署

Ubuntu Golang 编译 + Docker部署

原创
作者头像
code-x
修改2023-03-22 20:07:45
7560
修改2023-03-22 20:07:45
举报
文章被收录于专栏:code-xcode-x

配置Golang编译环境

  1. 下载go环境 https://studygolang.com/dl 选择go1.20.2.linux-amd64.tar.gz
  2. tar -zxvf go1.20.2.linux-amd64.tar.gz 解压到 /usr/local/go
  3. 创建 /usr/local/go-path
  4. vim /etc/profile
代码语言:javascript
复制
export GOROOT=/usr/local/go 
export GOPATH=/usr/local/go-path 
export PATH=$PATH:$GOROOT/bin

5. source /etc/profile 重新加载配置

6. 验证一下环境 go version

编译

  1. 进入源码目录
  2. 启用go module go generate -run "go env -w GO111MODULE=on"
  3. 配置下载代理 go generate -run "go env -w GOPROXY=https://goproxy.cn,direct"
  4. 下载依赖 go generate -run "go mod tidy"
  5. 创建二进制文件输出目录 mkdir output
  6. go build -ldflags "-s -w" -tags release -o output/test -s 和 -w 是传递给链接器的参数,它们分别表示: -s:省略符号表和调试信息。这会使生成的可执行文件更小,并且不包含调试信息,因此不容易被反汇编或者调试。这个选项在发布生产环境时很有用。 -w:省略 DWARF 符号表。这个选项可以减小生成的可执行文件的大小。 使用-tags release选项来禁用调试模式。这将从二进制文件中删除所有调试相关的代码和信息,从而提高二进制文件的运行速度和安全性。
  7. ./output/test 启动一下, 看看是否正常运行

部署

  1. output目录下 vim dockerfile 编辑后保存
代码语言:javascript
复制
# 谨慎选择基础镜像 越小的镜像缺失的工具越多, 可能存在的问题包括但不限于 
# 1. shell环境不完整, 表现为可执行文件执行不了  
# 2. ssl等基础库不存在, 无法访问https服务 
# 3. 常用的时区设置方式失效 
FROM centos:7 
RUN adduser appuser 
ADD test /test 
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone 
EXPOSE 7099 
## op 
RUN cd / 
RUN chmod 777 /test 
RUN mkdir /log 
RUN chmod -R 777 /log 
USER appuser 
CMD ["./test", "pro"]

2. 构建镜像 docker build -t test .

3. 创建自定义网络 docker network create --subnet=172.18.0.0/16 rootnet

4. 运行容器 docker run --name test -p 7099:7099 --network rootnet --ip 172.18.0.3 -v /usr/soft/test/config-pro.yaml:/config-pro.yaml -v /usr/soft/test/log/:/log/ -d test

--name 容器名

-p 端口映射 宿主机端口:容器端口

--network 指定网络

--ip 指定ip

-v 文件挂载 宿主机目录或文件:容器目录或文件

-d 后台模式 如果没有使用-d选项,容器将在前台模式下运行,这意味着你的控制台终端将一直占用

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置Golang编译环境
  • 编译
  • 部署
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档