docker(9):使用alpinelinux 构建 golang http 启动了,才15mb

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

1,关于alpine 环境



http://blog.csdn.net/freewebsys/article/details/53615757
昨天研究了下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/apk/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,总结



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

这个是个非常好的实现,怪不得golang 号称是云计算设计的语言呢。直接在alpine 5mb的系统上运行了,在安装一个bash,一共才15 mb,咋做版本升级,版本备份都行。
厉害了我的哥,golang 实在是太喜欢了。
准备把后台的系统都设计设计用 golang 重写吧。
其实java能做的golang 都能做呢。
java 打上一个jre 都 100 mb以上了。看看人家golang 才 几mb。
啥东西都齐了。golang真的是云计算的语言了呢。

时间: 2024-09-28 03:47:06

docker(9):使用alpinelinux 构建 golang http 启动了,才15mb的相关文章

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

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 设置环境变量:

docker(5):使用alpinelinux 构建python http 项目

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53509676 未经博主允许不得转载. 博主地址是:http://blog.csdn.net/freewebsys 1,开始学习构建docker镜像 http://study.163.com/course/courseMain.htm?courseId=1273002 课程讲的是使用centos构建.自己也一直使用centos,但是有个问题. 就是centos镜像比较大,安装的东

用 Docker、Gradle 来构建、运行、发布一个 Spring Boot 应用

本文演示了如何用 Docker.Gradle 来构建.运行.发布来一个 Spring Boot 应用. Docker 简介 Docker 是一个 Linux 容器管理工具包,具备"社交"方面,允许用户发布容器的 image (镜像),并使用别人发布的 image.Docker image 是用于运行容器化进程的方案,在本文中,我们将构建一个简单的 Spring Boot 应用程序. 有关 Docker 的详细介绍,可以移步至 <简述 Docker> 前置条件 JDK 1.8

docker下开发,修改环境变量启动jetty

1,本地测试docker程序 遇到问题:docker程序使用系统的环境变量启动的. 在服务器运行的时候是可以的,但是在本地启动的时候就补行了. 因为本地没有配置环境变量. 一种办法直接设置系统的环境变量,但是切换起来比较麻烦. 于是研究下jetty还是有参数可以进行配置的. http://stackoverflow.com/questions/3231797/specify-system-property-to-maven-project 不影响使用 2,直接在maven里面配置 直接配置就行:

如何利用docker 构建golang线上部署环境

公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜了下golang的镜像,直接就docker pull golang 最新的是1.9的版本 然后参考官方的文档弄了下Dockerfile大概是这样:   FROM golang MAINTAINER jackluo #指定工作目录 WORKDIR /go/src/ActivitApi COPY . .

百闻不如一战:“Docker巨好玩”镜像构建挑战赛

问题描述 4月28日,由云雀科技主办的,正式开启啦!本次挑战赛是国内第一场以Docker为主题的线上竞赛,旨在普及Docker知识,推动国内Docker生态系统的建设,为Docker爱好者和使用者提供一个实战平台.Docker技术已经在国内的开源市场方兴未艾,各种线上线下的讲座层出不穷.然而,知识的积累只是掌握一门技术的前提,深入的实践才能成为专家.所以,本次挑战赛依托这个简单易用的平台,为开发者提供一个学以致用的机会,还有机会拿大奖! 挑战赛主题Docker的魅力不仅在于提高资源利用率,更在于

Docker之利用 Dockerfile构建 Redis 服务的教程

Dockerfile   ENV REDIS_VERSION=3.2.1 ENV REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz \         REDIS_DOWNLOAD_SHA1=26c0fc282369121b4e278523fce122910b65fbbf   RUN \         REDIS_FILE=${REDIS_DOWNLOAD_URL##*/} &&a

Docker中使用Dockerfile构建 MariaDB 主从集群镜像

一.使用方法 1.单独MySQL模式 docker run -d \ -e TIMEZONE=Asia/Shanghai \ -v /data/mariadb-master:/data/mariadb \ -e MYSQL_ROOT_PASSWORD=lookback \ -p 3306:3306 \ mariadb:10.0.21 2.MariaDB MASTER docker run -d \ -e TIMEZONE=Asia/Shanghai \ -v /data/mariadb-mast

docker(10):virtualbox 安装使用 alpinelinux

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53638227 未经博主允许不得转载. 博主地址是:http://blog.csdn.net/freewebsys 1,golang非常适合云计算 docker 非常的好,golang 也可以直接跑在 alpine系统上面 但是,golang是个编译语言,不像java一样.可以把jar拷贝到其他系统上,golang依赖编译环境. 之前犯的一个错误就是,把centos系统上编译的二