docker(8):使用alpinelinux 构建 golang http 看看能有多小

简介: 1,alpine linux 非常小首先 alpine 非常的小,安装上了bash 之后也才 5mb。 golang 不需要其他的依赖,想看看是不是能在 alpine 上面跑呢。 搭建一个golang的环境,而不是把golang的环境放到alpine上面。2,首先在centos 搭建golang环境https://golang.org/doc/instal

1,alpine linux 非常小


首先 alpine 非常的小,安装上了bash 之后也才 5mb。
golang 不需要其他的依赖,想看看是不是能在 alpine 上面跑呢。
搭建一个golang的环境,而不是把golang的环境放到alpine上面。

2,首先在centos 搭建golang环境


https://golang.org/doc/install
下载然后解压缩:

tar -C /usr/local -xzf go1.7.4.linux-amd64.tar.gz
设置环境变量:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/data/go

假设gopath 在/data/go目录下面。
编写http.go

package main

import (
        "fmt"
        "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
        http.HandleFunc("/", handler)
        http.ListenAndServe("0.0.0.0:8080", nil)
}

非常简单。
go build http.go
./http

3,编写docker build


vi Dockerfile

FROM       docker.io/alpine:latest
MAINTAINER demo <juest a demo>

RUN apk add --update curl bash && \
    rm -rf /var/cache/apk/*

WORKDIR /data
ONBUILD COPY http /data

EXPOSE 8080

ENTRYPOINT ["/data/http"]

创建了一个最小的docker镜像环境。然后把源设置成清华的。并且安装了curl和 bash 工具。

4,启动


demo/go-http         1.0                 b180c236066d        11 seconds ago      9.555 MB

一共就只有 10mb的容器,非常的小呢。
但是但是现实还是残酷的。由于alpine太精简了。造成golang没有起来。
看了一个内核linux 是启动不了 golang的。
最终的dockerfile:

FROM       docker.io/golang:latest
MAINTAINER demo <juest a demo>

RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main" > /etc/apk/repositories

RUN apk add --update curl bash && \
    rm -rf /var/cache/apk/*

WORKDIR /data
ONBUILD COPY http /data

EXPOSE 8080

ENTRYPOINT ["/data/http"]

还是用到了docker官方的golang环境,才能启动。
否则报错

No such file or directory

可执行文件都找不到。容器无法启动。

5,总结


本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53615757 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

最终golang 在一个官方的环境下启动了。
没有弄明白golang到底需要啥环境。
最终大小为 679.6 MB
还以为 10mb 就能解决问题呢。看来是一个不错的探索。
其他环境也可以研究下。

目录
相关文章
|
1月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
20天前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
41 9
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
150 2
|
2月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
102 7
|
1月前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
65 6
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
31 4
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
55 3
|
1月前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
|
1月前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
69 0

热门文章

最新文章

下一篇
DataWorks