Docker 部署Go的两种基础镜像的实现
程序员文章站
2022-06-27 15:15:27
一、 golang:latest 基础镜像mkdir gotesttouch main.gotouch dockerfile1. 实例代码package mainimport ( "fmt"...
一、 golang:latest 基础镜像
mkdir gotest touch main.go touch dockerfile
1. 实例代码
package main import ( "fmt" "log" "net/http" ) func main() { http.handlefunc("/", func(writer http.responsewriter, request *http.request) { fmt.fprint(writer, "hello world") }) fmt.println("3000!!") log.fatal(http.listenandserve(":3000", nil)) }
2. dockerfile配置
#源镜像 from golang:latest #设置工作目录 workdir $gopath/src/github.com/gotest #将服务器的go工程代码加入到docker容器中 add . $gopath/src/github.com/gotest #go构建可执行文件 run go build . #暴露端口 expose 3000 #最终运行docker的命令 entrypoint ["./gotest"]
3. 打包镜像
docker build -t gotest .
- golang:latest 编译过程,其实就是在容器内,构建了一个go开发环境
- 这种源镜像打包大概800m左右,比较大。
二、 alpine:latest 基础镜像
- 使用此镜像大概过程就是,在linux机器,先把go程序打包成二进制文件,再丢到apine环境,执行编译好的文件。
- 默认情况下,go的runtime环境变量cgo_enabled=1,即默认开始cgo,允许你在go代码中调用c代码。通过设置cgo_enabled=0就禁用cgo了。所以需要执行:cgo_enabled=0 go build .即可。
- 此基础镜像打包只有13m,特别小。
#源镜像 from alpine:latest #设置工作目录 workdir $gopath/src/github.com/common #将服务器的go工程代码加入到docker容器中 add . $gopath/src/github.com/common #暴露端口 expose 3002 #最终运行docker的命令 entrypoint ["./common"]
打包镜像
docker build -t common .
到此这篇关于docker 部署go的两种基础镜像的实现的文章就介绍到这了,更多相关docker 部署go镜像内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
下一篇: XMind思维导图怎么在局域网共享?
推荐阅读
-
Docker部署MySQL8集群(一主二从)的实现步骤
-
Docker部署Tomcat及Web应用的实现
-
Asp.net Core Jenkins Docker实现一键化部署的实现
-
Redis快速部署为Docker容器的实现方法
-
最简单的spring boot打包docker镜像的实现
-
从零开始构建docker基础镜像的方法
-
使用docker -v 和 Publish over SSH插件实现war包自动部署到docker的操作步骤
-
两种方式创建docker镜像的启动容器时区别介绍(总结篇)
-
Docker CentOS7的系统上安装部署以及基础教程
-
docker部署rabbitmq集群的实现方法