首页 > 其他分享 >docker 制作go镜像

docker 制作go镜像

时间:2022-11-26 20:37:21浏览次数:62  
标签:http 80 fmt project go 镜像 docker hello

1.首先编写dockerfile 文件

#使用基础的官方镜像
FROM golang:1.17-alpine As build
#工作目录
WORKDIR /project/
#复制
COPY . /project
#制作镜像的时候运行 设置 go代理, 设置go mod 模式
RUN go env -w GOPROXY=https://goproxy.io,direct
RUN go env -w GO111MODULE=on
#编译二进制文件 Go的runtime环境变量CGO_ENABLED=1,即默认开始cgo,允许你在Go代码中调用C代码

#CGO_ENABLED 如果标准库中是在CGO_ENABLED=1情况下编译的,那么编译出来的最终二进制文件可能是动态链接,
#   所以建议设置 CGO_ENABLED=0以避免移植过程中出现的不必要问题。
# GOOS 编译目标平台上的操作系统(darwin, freebsd, linux, windows)
# GOARCH 编译目标平台上的硬件体系架构(amd64, 386, arm, ppc64等)
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o hello   hello.go


FROM alpine
ENV TZ Asia/Shanghai
COPY --from=build /project/hello /project/hello

#定义工作目录为project
WORKDIR /project

#CMD ["./hello"]
#声明镜像使用80端口 并不代表可以 直接访问此端口
EXPOSE 80
#容器启动命令
ENTRYPOINT  ["./hello"]

2.编写hello.go文件

package main

import (
    "fmt"
    "net/http"
)

func Hello(w http.ResponseWriter, r *http.Request) {
    fmt.Println("handle hello") //服务端打印输出
    fmt.Fprintf(w, "hello GoLandWEB")

}
func login(w http.ResponseWriter, r *http.Request) {
    fmt.Println("handle login")
    fmt.Fprintf(w, "login ...")

}
func main() {
    http.HandleFunc("/", Hello)
    http.HandleFunc("/login", login)
    err := http.ListenAndServe("0.0.0.0:80", nil)
    if err != nil {
        fmt.Println("http listen failed")
    }
}

3.执行docker build 命令

docker build -t hello:v2  .

4.查看镜像 docker images

 

5.启动容器

[root@k8s-master httpdemo]# docker run -p 80:80 hello:v2
handle hello
handle hello

6.访问测试

[root@k8s-master zhangxueqing]# curl 127.0.0.1:80
hello GoLandWEB

 

标签:http,80,fmt,project,go,镜像,docker,hello
From: https://www.cnblogs.com/zxqblogrecord/p/16928230.html

相关文章

  • 适合编程初学者的开源博客系统(Go语言版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言(我这里说的主流,直白点讲就是互联网公司......
  • Node工程使用云服务器中的redis镜像做数据库
     Redis镜像安装在云服务器中执行指令dockerpullredis添加redis镜像实例的配置[root@VM-0-11-centos~]#cd/home[root@VM-0-11-centoshome]#lsmongote......
  • docker快速搭建zookeeper集群
    一、准备工作1、拉取zookeeper镜像dockerpullzookeeperdockertagdocker.io/zookeeperzookeeperdockerrmidocker.io/zookeeper2、安装docker-compose工具#升级pippi......
  • 构建镜像开源工具 buildah
    构建镜像开源工具buildahtags:images文章目录​​构建镜像开源工具buildah​​​​1.简介​​​​2.特点​​​​3.Buildah和Podman​​​​4.安装​​​​4.1Cen......
  • django模型的字段类型简介
    【django基础】django模型的字段类型简介说实在的,每一个框架基本都会用一套orm,只是各有各的标准,每次用起来都挺费劲的,所以还是要单独整理下AutoField—自增列=int......
  • Python - 处理mongodb
    windows安装mongodb下载地址:https://www.mongodb.com/try/download/communitytips:不下载这个图形化工具,可能会很慢:配置环境变量到PathE:\mongodb\bin......
  • go专家编程--数据结构chan
    chan结构typehchanstruct{ qcount uint//队列中剩余元素大小 dataqsiz uint//队列大小 buf unsafe.Pointer//环......
  • Redis系列---【Docker中的redis报错Failed opening t
    Docker中的redis报错FailedopeningtheRDBfileweb(inserverrootdir/etc/cron.d)forsaving:Permissiondenied1.问题最近,突然发现redis不能用了,一看日志,如下......
  • docker网络
    docker网络docker0网络详解清空环境dockerrm-f$(dockerimages-aq)会发现有三个网络docker是如何处理容器网络的?ps-adockerps-a|grepExiteddocker......
  • docker介绍
    推荐教程:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0&vd_source=642a988fd50073c667fec7829ca79103Docker技术入门与实战-第3版.pdfdokecr为......