使用alpinelinux 构建 golang http 启动了,才15mb

栏目: Go · 发布时间: 8年前

内容简介:使用alpinelinux 构建 golang http 启动了,才15mb

使用alpinelinux 构建 golang http 启动了,才15mb

使用alpinelinux 构建 golang http 启动了,才15mb

1,关于alpine 环境

昨天研究了下golang的http服务器。 

发现在启动的时候报错:

No such file or directory

发现这个错误,开始还以为是alpine 的系统lib库少了, 

必须使用 Docker 官方的golang镜像呢。 

后来研究明白了,其实是因为我的宿主是centos。 

我在centos 上编译了 golang,然后拷贝到alpine 环境上造成的。 

解决办法。 

1,使用golang:alpine 镜像 241 mb 进行编译,映射一个文件夹。 

2,然后把编译好的文件拷贝出来,放到alpine的镜像上即可。

这样一个15.24 MB golang 环境就好了。 

因为还安装了一个 bash ,可以进入系统查看。

2,操作流程

首先构建一个golang build 的环境。

FROM       docker . io/golang:alpine 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 /*

编译镜像:

docker build -t demo/go -build : 1.0 .

启动镜像,并把/data/Go 目录映射到 /data/go目录,其中–rm 表示退出之后删除镜像。

docker run -it -v / data /go:/ data /go -- rm demo/go -build : 1.0 /bin/bash

#cd / data /go

#go build http . 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) }

摘自golang 官方的httpdemo。

3,将alpine 和go http打包

在alpine环境下编译的http 包再做一个镜像,拷贝到alpine系统下:

FROM       docker.io/alpine:latest

MAINTAINER demo <juest a demo>

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

RUN apk add --update curl bash && \

rm -rf /var/cache/apk/*

RUN mkdir -p / data /go

COPY http / data /go

EXPOSE 8080

ENTRYPOINT [ "/data/go/http" ]

打包,并把http 启动。

docker build -t demo/go -http : 1.0 .

docker run -d -p 8080 : 8080 -- name go -http demo/go -http : 1.0

直接访问 curl localhost:8080 即可了。

4,总结

这个是个非常好的实现,怪不得golang 号称是云计算设计的语言呢。直接在alpine 5mb的系统上运行了,在安装一个bash,一共才15 mb,咋做版本升级,版本备份都行。 

厉害了我的哥,golang 实在是太喜欢了。 

准备把后台的系统都设计设计用 golang 重写吧。 

其实 Java 能做的golang 都能做呢。 

java 打上一个jre 都 100 mb以上了。看看人家golang 才 几mb。 

啥东西都齐了。golang真的是云计算的语言了呢。

使用alpinelinux 构建 golang http 启动了,才15mb

使用alpinelinux 构建 golang http 启动了,才15mb


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP Cookbook

PHP Cookbook

Adam Trachtenberg、David Sklar / O'Reilly Media / 2006-08-01 / USD 44.99

When it comes to creating dynamic web sites, the open source PHP language is red-hot property: used on more than 20 million web sites today, PHP is now more popular than Microsoft's ASP.NET technology......一起来看看 《PHP Cookbook》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器