GO更新1.18版本并在Docker下运行实际案例

简介: GO更新1.18版本并在Docker下运行实际案例

零、摘要

  • MacOS更新GO版本1.18
  • Docker下运行GO
  • 解决Docker中拉取仓库需要输入密码
  • 解决包下载连接超时
  • 解决docker-compose下command配置多行

一、查看现有版本

go version
go version go1.14.1 darwin/amd64

最新版本1.18的新特性

有必要升级到最新版本吗?

经过小范围的调查,开发者和所在技术团队对于新版本持积极的学习态度,建议升级到最新版本。

二、升级版本

1.官网下载最新版本

找到你所在的系统,下载安装即可。

安装包下载资源我已单独上传,方便各位下载。

https://download.csdn.net/download/diandianxiyu/85109596

2. 修改环境变量

在安装完成之后,go所在的位置是/usr/local/go

(base) blog.csdn.net/diandianxiyu_geek@localhost ~ % cd /usr/local/go
(base) blog.csdn.net/diandianxiyu_geek@localhost go % ls
AUTHORS   PATENTS   api   lib   test
CONTRIBUTING.md README.md bin   misc
CONTRIBUTORS  SECURITY.md codereview.cfg  pkg
LICENSE   VERSION   doc   src
(base) blog.csdn.net/diandianxiyu_geek@localhost go % cat VERSION
go1.18%

添加下面到.profile

export PATH="/usr/local/go/bin:${PATH}"

3. 确认版本

(base) blog.csdn.net/diandianxiyu_geek@localhost ~ % go version  
go version go1.18 darwin/amd64

三、在Docker中使用

为了方便管理不同项目的开发环境,我们使用docker-composer管理每个项目的开发环境。

以之前我发的水印为例。

首先,通过官网找到官方源https://hub.docker.com/_/golang

解决Docker中拉取仓库需要输入密码

我们在执行运行Docker时会遇到这样的情况,需要我们跳转到认证授权页面验证身份,这对于在Docker中执行来说显然是不可能的。

app_1  | Cloning into 'goimgtype'...
app_1  | fatal: unable to update url base from redirection:
app_1  |   asked for: https://codechina.csdn.net/diandianxiyu/goimgtype/info/refs?service=git-upload-pack
app_1  |    redirect: https://passport.csdn.net/login?code=applets

在项目中,有个部署密钥的配置,可以配置给CI使用的密钥。

部署密钥允许只读或读写(如果启用)访问你的仓库。 部署密钥可以用于CI, 预发布或生产服务器。你可以创建一个部署密钥或添加一个现有密钥

(base) blog.csdn.net/diandianxiyu_geek@localhost ~ % ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/xiaoyu/.ssh/id_ed25519): 
/Users/xiaoyu/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/xiaoyu/.ssh/id_ed25519
Your public key has been saved in /Users/xiaoyu/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Cr7PrncZ6+GAl49NC5hDGBcGumT2Draue0BskQstYc0 xiaoyu@localhost
The key's randomart image is:
然后复制到剪贴板
pbcopy < ~/.ssh/id_ed25519.pub

再把生成的对应的私钥放在项目中。

解决包下载连接超时

修改配置的GOPROXY

go env -w GOPROXY=https://goproxy.cn,direct

docker-compose.yml

注意的是,需要根据自己的实际情况修改配置。

version: '3'
services:
  app:
    image: golang:1.18
    volumes:
      - $PWD:/go/src/watermark
    command:
      - sh
      - -c
      - |
          eval `ssh-agent -s`
          ssh-add /go/src/watermark/id_ed25519
          go env -w GOPROXY=https://goproxy.cn,direct
          cd /go/src/watermark
          go get -t -v github.com/golang/freetype
          go get -t -v gitcode.net/diandianxiyu/goimgtype
          go run /go/src/watermark/main.go

运行docker-compose up即可执行。

(base) blog.csdn.net/diandianxiyu_geek@localhost watermark % docker-compose up
Recreating watermark_app_1 ... done
Attaching to watermark_app_1
app_1  | Agent pid 9
app_1  | Identity added: /go/src/watermark/id_ed25519 (xiaoyu@localhost)
app_1  | go: downloading github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
app_1  | go: downloading golang.org/x/image v0.0.0-20220412021310-99f80d0ecbab
app_1  | go: downloading gitcode.net/diandianxiyu/goimgtype v1.0.0
app_1  | go: downloading github.com/shamsher31/goimgext v1.0.0
watermark_app_1 exited with code 0

四、总结

GO语言相关的生产环境相比其他语言更敢于使用新版本,并拥抱新变化,不像是万年的Java8。

相关文章
|
4月前
|
机器人 网络安全 数据安全/隐私保护
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
本文介绍了如何在服务器上搭建NTQQ机器人,通过官方NTQQ对接各框架,实现QQ登录的稳定运行。文章提到了需要准备一台服务器和相应的软件,并详细描述了通过SSH链接服务器、创建文件夹和配置文件、编辑配置文件地址端口、运行容器等步骤。同时,文章还介绍了VNC连接的使用和配置,以及使用watchtower进行NTQQ的更新。文章总结起来就是在服务器上搭建NTQQ机器人,实现QQ登录的稳定性和自动登录功能,同时提供了更新和维护的方法。
296 3
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
|
15天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
65 20
|
2月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
297 76
|
1月前
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
148 25
|
2月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
1月前
|
存储 Ubuntu 关系型数据库
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
61 13
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
271 7
|
2月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
96 5
|
2月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
94 4
|
3月前
|
安全 Go 开发者
代码之美:Go语言并发编程的优雅实现与案例分析
【10月更文挑战第28天】Go语言自2009年发布以来,凭借简洁的语法、高效的性能和原生的并发支持,赢得了众多开发者的青睐。本文通过两个案例,分别展示了如何使用goroutine和channel实现并发下载网页和构建并发Web服务器,深入探讨了Go语言并发编程的优雅实现。
61 2

热门文章

最新文章