-
尝试了好久的helloworld,都卡在pull image环节,修改了resolve dns也没有成功,排除网络问题,应该还是配置有问题。现成的测试项目暂时用不了,那就自己写一个吧:在Go中编写了一个简单的服务器,用“Hello World”响应http请求。[root@ecs-b769 ~]# vi main.go package main import ( "fmt" "log" "net/http" "os" ) func GetEnvDefault(key, defVal string) string { val, ex := os.LookupEnv(key) if !ex { return defVal } return val } func handler(w http.ResponseWriter, r *http.Request) { log.Print("Hello world received a request.") version := GetEnvDefault("VERSION", "v1") log.Println(version) fmt.Fprintf(w, "Hello world %s\n",version) } func main() { log.Print("Hello world sample started.") http.HandleFunc("/hello", handler) port := GetEnvDefault("PORT", "80") log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil)) }从基础Go镜像开始构建Dockerfile。[root@ecs-385f ~]# vi Dockerfile #use the official Golang image to create a build artifact. # https://hub.docker.com/_/golang FROM golang:1.12.5 as builder # Copy local code to the container image. WORKDIR /go/src/app COPY . . RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o start main.go # Use a Docker multi-stage build to create a lean production image. # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds FROM alpine:3.9.4 COPY --from=builder /go/src/app/start /start RUN chmod 775 /start # Run the web service on container startup. CMD ["/start"] # Use the official Golang image to create a build artifact. # https://hub.docker.com/_/golang FROM golang:1.12.5 as builder # Copy local code to the container image. WORKDIR /go/src/app COPY . . RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o start main.go # Use a Docker multi-stage build to create a lean production image. # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds FROM alpine:3.9.4 COPY --from=builder /go/src/app/start /start RUN chmod 775 /start # Run the web service on container startup. CMD ["/start"][root@ecs-385f ~]# docker build -t hello:v1 . Sending build context to Docker daemon 17.92kB Step 1/8 : FROM golang:1.12.5 as builder ---> 1ef078f0da9e Step 2/8 : WORKDIR /go/src/app ---> Using cache ---> f95f8c547d5f Step 3/8 : COPY . . ---> b1a8ce01e3de Step 4/8 : RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o start main.go ---> Running in cee9bd3b172f Removing intermediate container cee9bd3b172f ---> 6a99fdb6ace9 Step 5/8 : FROM alpine:3.9.4 3.9.4: Pulling from library/alpine e7c96db7181b: Pull complete Digest: sha256:7746df395af22f04212cd25a92c1d6dbc5a06a0ca9579a229ef43008d4d1302a Status: Downloaded newer image for alpine:3.9.4 ---> 055936d39205 Step 6/8 : COPY --from=builder /go/src/app/start /start ---> 70fb9cff5e68 Step 7/8 : RUN chmod 775 /start ---> Running in 35630a07c2d1 Removing intermediate container 35630a07c2d1 ---> 6706473c77bb Step 8/8 : CMD ["/start"] ---> Running in 88a57f47e74a Removing intermediate container 88a57f47e74a ---> 145828adcb9b Successfully built 145828adcb9b Successfully tagged hello:v1 [root@ecs-385f ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello v1 145828adcb9b 30 seconds ago 20.2MByaml文件,其实就是需求文本,如果有人能跑通就没有问题,有问题就是环境兼容的问题。[root@ecs-385f ~]# vi hello-kubernetes.yaml labels: app: hello-kubernetes spec: containers: - name: helloworld-kubernetes image: hello:v1 imagePullPolicy: Never ports: - containerPort: 80 # hello-kubernetes.yaml apiVersion: v1 kind: Service metadata: name: hello-kubernetes spec: type: ClusterIP ports: - port: 80 targetPort: 80 selector: app: hello-kubernetes --- apiVersion: apps/v1 kind: Deployment metadata: name: hello-kubernetes spec: replicas: 1 selector: matchLabels: app: hello-kubernetes template: metadata: labels: app: hello-kubernetes spec: containers: - name: helloworld-kubernetes image: hello:v1 imagePullPolicy: Never ports: - containerPort: 80[root@ecs-b769 ~]# kubectl apply -f hello-kubernetes.yaml service/hello-kubernetes unchanged deployment.apps/hello-kubernetes unchanged [root@ecs-b769 ~]# kubectl get po NAME READY STATUS RESTARTS AGE hello-kubernetes-6c67c8c8dd-tz5kd 1/1 Running 0 33m myapp-9896ff477-949kx 0/1 ImagePullBackOff 0 44m [root@ecs-b769 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-kubernetes ClusterIP 10.96.232.94 <none> 80/TCP 34m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37h my-service LoadBalancer 10.96.145.90 <pending> 8080:32471/TCP 51m nginx-service NodePort 10.96.226.104 <none> 80:31050/TCP 23h [root@ecs-b769 ~]# kubectl exec -it hello-kubernetes sh Error from server (NotFound): pods "hello-kubernetes" not found [root@ecs-b769 ~]# kubectl exec -it hello-kubernetes-6c67c8c8dd-tz5kd sh / # ls bin dev etc home lib media mnt opt proc root run sbin srv start sys tmp usr var / # exit [root@ecs-b769 ~]# curl hello-kubernetes/hello curl: (6) Could not resolve host: hello-kubernetes; Unknown error [root@ecs-b769 ~]# curl 10.96.232.94/hello Hello world v1
-
2021-03-12:go中,如何确定有没有内存泄露,系统里怎么去监控整体的运行情况,日志是怎么处理的?
-
2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行,如何实现?
-
近几年,关于 Go 与 Java 还有 c 的对比和讨论愈演愈烈,但不可否认的是,在十年多的时间里,Go 语言发展势头强劲,凭借其简洁、高效的特性,在竞争激烈的编程语言市场中占据了一席之地。字节跳动已经全部转 Go 语言,腾讯、阿里等大公司纷纷选择使用 Go 语言来开发服务应用项目。在 TIOBE 近一两年的榜单中,Go 语言在前 20 位中,总体呈现稳中有升的趋势,2020年 3 月又一次冲进前十。而在国内,没有哪个大厂不做 Kubernetes,微服务和 Serverless,这些正是云原生语言 Go 的主场。目前大热的区块链,以太坊的 geth,比特币的 btcd,闪电网络的 lnd,都是 Go 语言开发。不仅如此,区块链更被列为国家战略,这也很大程度加速了Go语言的崛起,2018年5月20日工业和信息化部信息中心发布《2018中国区块链产业白皮书》,Go语言与区块链成为“数字中国”建设的重要支撑。有亲爹谷歌的扶持,有大厂背书,社区和生态持续良好发展,Go 语言的前途一片光明。因此,我们认为 Go 语言有希望越过早期采用者阶段,进入早期大众阶段。如果你是一名 PHP,或者 NET 工程师,那我建议你从今天开始,果断利用业务时间学习下 Go 语言,跟上时代的潮流走,把握住这波语言红利。如果你是一名相对成熟的 Java 工程师,我同样也建议你考虑下 Go 语言。因为在一个人都可以的情况,你可以在多种语言里都可以,做得很好,这个毫无疑问。但是如果说来了一波趋势,你能抓住的话,等于对你来说是一个加速剂。目前Go 语言就处于这样一个不错的时代中。其实,现在很多人已经开始如火如荼的学习 Go 语言了,可能在你刚刚换到这门语言的时候,你会发现之前你之前代码的那些问题全都没有了,感觉前途一片美好。遗憾的是,可能这是因为你仅仅才开始写了几个模块,还没有进入维护期。事实是如果你没有深入的去钻研软件工程的规律和技术,没有深入的了解 Go 语言的独有特色,理解 Go 语言的设计哲学,建立一套专属的使用方法论,那么是很难通过换一门新语言就解决所有的问题的。
-
2021-03-06:go中,公共变量是协程安全吗?赋值操作是原子的吗?为什么?
-
2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么?
-
2020-12-18:java和go,并发控制有哪几种方式?#福大大架构师每日一题#
-
2020-12-17:java和go,如何高效的拼接字符串?#福大大架构师每日一题#
-
那晚你错过的交流(PPT文末自取)那一晚,你没来第八期云享MindTalks,可能错过了一场精彩的对话交流~餐前小甜点助手小采访:你为什么选择用Python?因为语法简单?优雅?还是因为免费?:不,因为惜命,“人生苦短,我用Python”。暖心小贴士:Python的编写效率高,可以用Python省下的时间去植发哦。助手小采访:用Python你幸福吗?:我姓张。助手小采访:……,那可以请您简单分享一下Python的使用体验吗?:动态一时爽,一直动态一直爽。助手小采访:那是不是意味着这个工具很好用,妈妈再也不用担心我出bug的感觉?:什么BUG?!!暖心小贴士:动态一时爽,重构火葬场,这是动态语言的弊端。助手小采访:听说您之后又去学了Go?请用一句话证明。:err !=nil精彩正餐吃到饱交流者1号:Go的gorotine和Python的corotine区别?张老师:gorotine应该就是Go语言的协程,corotine是Python语言的协程,corontine是借鉴了JavaScript里的语法。协程你可以想象为轻量型的线程。交流者2号:我现在想修全栈向,Python用了三年,不会别的语言。一直在开脚本和API,想做点带前端的完整作品。未来趋势来看,是修炼react+go还是继续Python撸flask+django?张老师:谈点个人看法啊,Python用了三年说明你已经很熟悉Python了。从我自己的经历来说,我也是先学了Python然后又学习了Go,我觉得我们学点其他的知识,有助于拓宽我们的知识面,能够帮助到自己打开视野。react是Javascript的一个分支,一个框架,如果你想要修全栈的话,是可以学习一下的。现在react,vue比较主流,flask的话,目前不是那么的主流。交流者3号:Python使用uvloop的话,速度比Go如何?张老师:这个问题我没有实践过uvloop,无法给你做准确的判断,如果你用Python做一些底层的设计的话,能够对它进行一些优化,很可能会取得很好的效果。交流者4号:前端是vue还是react?如果时间有限的话。张老师:国内的话vue还是很多的,国外多是react,如果时间有限的话,建议学习vue,可以从3开始学;如果时间允许的话,建议两个都可以学着看看。交流者5号:Python转数据挖掘可以吗?不知道从何下手。张老师:如果你是用Python做数据分析,是完全可以转数据挖掘的。数据挖掘的话,还包含数据分析和机器学习的,Python的话,比较好的一点,就是有很多库都给你封装好了。如果说你能理解基础原理的话,完全是可以转的。交流者6号:Go和dart差不多吗?张老师:我知道移动端一个比较火的框架就是用dart语言写的,dart的话更多的可能会用于移动开发,相对来说Go的话使用的范围更广。交流者7号:老师是怎么学习Go的?张老师:总结下来的话,就是实践,“实践出真理”,我觉得我个人比较有效的学习方式就是通过实践,因为有Python的基础,经常做Python和go的对比,加强自己的理解,也更有意思。learn by doing是非常有效的学习方式。交流者8号:老师您的CrawLab从Python到Go重构了多久?张老师:重构了大概二十天左右,最近在着手做大的架构升级,预计明年初可以发版~Github: https://github.com/crawlab-team/crawlabDemo: https://demo-pro.crawlab.cn文档: https://docs.crawlab.cn欢迎大家来给我+star哦~谢谢交流者9号:请问有什么推荐的项目吗?张老师:推荐可以从小项目入手,比如: PPT: https://tinyurl.com/yd7gdf4k- 视频: https://www.bilibili.com/video/BV1Az4y1r7gE/- Go入门开源项目: 1. https://github.com/linxGnu/goseaweedfs 2. https://github.com/spf13/viper 3. https://github.com/crawlab-team/crawlab-go-sdk 4. https://github.com/jaeles-project/gospider学习资料推荐Python 基础 •https://github.com/jackfrued/Python-Core-50-Courses (中文) •https://github.com/learnbyexample/Python_Basics (英文) 进阶 《Python高性能编程》 - Micha Gorelick & Ian Ozsvald 《Python核心编程》 - Wesley Chun 《利用Python进行数据分析》 - Wes McKinney 《Python自然语言处理》 - Steven Bird, Ewan Klein & Edward Loper 《Python 3网络爬虫开发实战》 - 崔庆才 《Python 3网络爬虫宝典》 - 韦世东 极客时间《Python核心技术与实战》 -景霄Go 基础 掘金小册《基于 Go 语言构建企业级的 RESTful API 服务》 - 雷克斯 《Go语言核心编程》 - 李文塔 进阶 《Go语言实战》 - William Kennedy, Brian Ketelsen & Erik St. Martin 《Go语言高级编程》 - 柴树杉 &曹春晖更多精彩,敬请期待~扫码进微信群,仅限200人开始时间12月17日 20:00活动介绍云享MindTalks是由华为云DevCloud团队携手云享专家共同策划进行的系列技术交流活动。各业界大咖纷纷现身群聊,以即时对话形式,来进行最直接的技术交流和思想碰撞。不同领域的专家,各样的业界话题尽在此处,为保证极简极高效,活动仅20分钟,限量200人,先进先得。编程语言那么多那个才是你的心头好?是优雅简单的Python?还是高效精致的Go?动态与静态语言的选型之争,由张冶青老师带你全面分析! 专家介绍知名外企前端开发工程师神秘Night Team(夜幕团队)成员8年软件开发经验,全干工程师专注前端、爬虫和数据分析领域活动规则1.扫码加小助手入群聊,仅限200人,先到先得。2.对未能及时回复的问题,由助手收集集中回答。3.更多资源和活动请进入云享MindTalks VIP群。4.抽奖奖品为限定HE2E知识卡牌和老师推荐书籍 《Go语言核心编程》。
-
2020-12-12:现场写代码,把CPU打满,java和go都行,并解释为什么。#福大大架构师每日一题#
-
不玩虚,才是真狂欢,扫描图中二维码,火力全开“购够GO”!!!------【我】------【是】------【分】------【割】------【线】---【学习福利】关注华为云GaussDB(DWS)公众号:这里会定期推送相关干货:精品博文、维护宝典、产品信息等,和您分享最新最全的PB级数仓GaussDB(DWS)黑科技~(扫描下方公众号二维码即可关注)添加华为云GaussDB(DWS)小助手微信号:进入专家交流群,实时交流学习、分享最新的DWS资源~(扫描下方小助手二维码即可进群)GaussDB(DWS)产品主页:https://www.huaweicloud.com/product/dws.html
-
https://bbs.huaweicloud.com/forum/thread-92792-1-1.html
-
2020-12-07:go中,slice的底层数据结构是什么?#福大大架构师每日一题#
-
2020-12-05:go中,map的扩容流程是什么?#福大大架构师每日一题#
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
即将直播
热门标签