Docker 部署Go的两种基础镜像的实现

一、 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 基础镜像

  1. 使用此镜像大概过程就是,在linux机器,先把go程序打包成二进制文件,再丢到apine环境,执行编译好的文件。
  2. 默认情况下,Go的runtime环境变量CGO_ENABLED=1,即默认开始cgo,允许你在Go代码中调用C代码。通过设置CGO_ENABLED=0就禁用CGO了。所以需要执行:CGO_ENABLED=0 go build .即可。
  3. 此基础镜像打包只有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镜像内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于Docker镜像部署go项目的方法步骤

    依赖知识 Go交叉编译基础 Docker基础 Dockerfile自定义镜像基础 docker-compose编排文件编写基础 当然,一点也不会也可以按照这个步骤部署完成,不过可能中间如果出点小问题,会不知道怎么解决,当然你也可以留言. 我是在mac环境上开发测试的,如果你是在windows上可能有一点出入,但应该不会有啥大问题. 一.依赖环境 Docker 二.编写一个GoLang web程序 我这里就写一个最简单的hello world程序吧,监听端口是80端口. 新建一个main.go文件

  • Docker 部署Go的两种基础镜像的实现

    一. 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) { f

  • 详解docker部署SpringBoot及替换jar包的方法

    关于docker的安装和使用,可以看看之前这两篇文章.docker kubernetes dashboard安装部署详细介绍和Docker如何使用link建立容器之间的连接.这篇文章主要介绍如何在docker上部署springboot项目.关于如何创建springboot项目可以看看这篇文章IDEA上面搭建一个SpringBoot的web-mvc项目遇到的问题 本文主要介绍docker部署springboot的三种方式,分别是:入门方式.jar包替换部署的方式和脚本部署方式,一步步来手把手教程.

  • Docker部署web项目的实现

    上一篇已经安装好docker服务,下面继续介绍如何部署web项目 一:随便创建目录dock,准备好如下文件: 二.编写Dockerfile,通过它能快速地构建docker镜像 vi Dockerfile 新增如下配置 FROM centos MAINTAINER this is dock image <jsh> ADD jdk1.8.0_191 /usr/local/java ENV JAVA_HOME /usr/local/java ENV JAVA_BIN /usr/local/java/

  • Docker部署ElasticSearch和ElasticSearch-Head的实现

    本篇主要讲解使用Docker如何部署ElasticSearch:6.8.4 版本,讲解了从Docker拉取到最终运行ElasticSearch 以及 安装 ElasticSearch-Head 用来管理ElasticSearch相关信息的一个小工具,本博客系统首页的搜索正是使用了ElasticSearch来实现的,由于ElasticSearch 更新太快 以至于SpringData-ElasticSearch都跟不上 Es的更新 我也是一开始下载8.x的版本 导致SpringData-Elast

  • docker 部署mysql详细过程(docker部署常见应用)

    之前给大家介绍过:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql:5.7.26 # 查看镜像 docker images|grep mysql # 启动容器镜像,建议在/usr/local/workspace/mysql 下执行以下docker run 命令   docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v

  • 两种方式创建docker镜像的启动容器时区别介绍(总结篇)

    Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持. 下面重点给大家介绍基于两种创建docker镜像的启动容器时区别,感兴趣的朋友可以跟着小编一起学习! 1.凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,例如: docker run -d -P tomcat

  • Docker创建镜像两种方法详解

     Docker创建镜像             最近学习Docker 的知识,偶然在网上看到关于Docker 创建对象的两种方法很好,这里记录下,也许可以帮助到你. 我们都知道Docker中我们是基于镜像来运行的容器,那如何创建镜像呢?创建镜像有两种方法,一是使用docker commit命令,二是使用docker build命令和Dockerfile文件.这里我们说的创建镜像是指基于一个已有的基础镜像比如ubuntu等,而不是从零创建一个全新的镜像. 下面分别简单介绍一下两种方法.      

  • Docker构建镜像的两种方式实现

    目录 从已有镜像更新镜像: 从零开始构建镜像: 从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改. 从已有镜像更新镜像 从零开始构建镜像 从已有镜像更新镜像: 更新镜像之前,我们需要使用镜像来创建一个容器. 进入容器: docker run -t -i db2b37ec6181 /bin/bash 在运行的容器内使用 apt-get update 命令进行更新.在完成操作之后,输入 exit 命令来退出这个容器. 此时 ID 为 0aab061e6f

  • Docker部署Nginx并修改配置文件的两种方式

    目录 一.创建容器 二.修改配置文件 1. 进入容器内部修改配置文件 2.容器加载外部配置文件 总结 一.创建容器 # 搜索Nginx镜像 docker search nginx # 拉取Nginx镜像 docker pull nginx # 查看镜像名为nginx的镜像 docker images nginx # 运行镜像,生成容器 # 命令解读: # -d:以后台守护线程运行 # --name:容器命名 # -p 80:80 : 映射端口,容器内部80端口映射到服务器80端口 # nginx

  • Docker镜像构建的两种方法解析

    关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行容器),也可以把自己现有的系统制作成ghost文件(从容器构建镜像).Dockerfile则像是一个生成ghost文件的脚本(镜像构建脚本),这个脚本会指定去哪里下载哪个版本的window系统,再去哪里下载哪些软件并安装,再修改哪些配置文件,等等.本文主要讲的是,如何从容器构建镜像(把现有系统制作成

随机推荐