前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go alpine docker image 搭建

go alpine docker image 搭建

作者头像
solate
发布2019-07-22 16:23:58
1.4K0
发布2019-07-22 16:23:58
举报
文章被收录于专栏:solate 杂货铺solate 杂货铺

Dockerfile 搭建目录结构--Dockerfile --main.go写一个go的helloworldpackage main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", hello) err := http.ListenAndServe(":8080", nil) //设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) } } func hello(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Method) //GET w.Write([]byte("hello world")) }写Dockerfile# 第一行必须指定基于的基础镜像, alpine FROM golang:alpine # MAINTAINER docker_user docker_user@email.com # 镜像的操作指令 RUN mkdir /app ADD . /app/ WORKDIR /app RUN go build -o main . # 容器启动时执行指令 CMD ["./main"]在创建的目录内, 运行 docker build -t webtest ..-t 指定编译镜像名 运行镜像 docker run -d -p 9090:8080 webtest 访问 localhost:9090/ 编译后再打包成Docker目录为--bin ---- main --cmd ---- build.sh --config ----config.toml --Dockerfile --main.go在cmd中执行build.sh#!/bin/bash echo "begin..." # 编译程序为二进制文件 GOOS=linux go build -ldflags "-w" -o ../bin/main ../main.go # docker 部分 docker build -t dse:0.0.1 ../. # tar docker save -o ../bin/dse.tar dse:0.0.1 echo "end"Dockerfile 文件FROM golang:alpine # 创建目录 RUN mkdir -p /app/config # 创建工作空间 WORKDIR /app # 复制二进制文件到工作目录 ADD bin/main /app/ # 复制配置文件到工作目录 ADD config/config.toml /app/config/config.toml # 启动程序 CMD ["/app/main"]

目录结构

代码语言:javascript
复制
--Dockerfile
--main.go
  1. 写一个go的helloworld
代码语言:javascript
复制
package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {

	http.HandleFunc("/", hello)
	err := http.ListenAndServe(":8080", nil) //设置监听的端口
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

func hello(w http.ResponseWriter, r *http.Request) {

	fmt.Println(r.Method) //GET

	w.Write([]byte("hello world"))
}
  1. 写Dockerfile
代码语言:javascript
复制
# 第一行必须指定基于的基础镜像, alpine
FROM golang:alpine


# MAINTAINER docker_user docker_user@email.com


# 镜像的操作指令
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN go build -o main .


# 容器启动时执行指令
CMD ["./main"]
  1. 在创建的目录内, 运行 docker build -t webtest ..

-t 指定编译镜像名

  1. 运行镜像 docker run -d -p 9090:8080 webtest
  2. 访问 localhost:9090/

编译后再打包成Docker

目录为

代码语言:javascript
复制
--bin
---- main
--cmd
---- build.sh
--config
----config.toml
--Dockerfile
--main.go

在cmd中执行build.sh

代码语言:javascript
复制
#!/bin/bash

echo "begin..."

# 编译程序为二进制文件
GOOS=linux go build -ldflags "-w" -o ../bin/main  ../main.go


# docker 部分
docker build -t dse:0.0.1 ../.

# tar
docker save -o ../bin/dse.tar dse:0.0.1

echo "end"

Dockerfile 文件

代码语言:javascript
复制
FROM golang:alpine

# 创建目录
RUN mkdir -p /app/config
# 创建工作空间
WORKDIR /app
# 复制二进制文件到工作目录
ADD bin/main /app/
# 复制配置文件到工作目录
ADD config/config.toml /app/config/config.toml

# 启动程序
CMD ["/app/main"]

参考

Containerize This! How to build Golang Dockerfiles

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dockerfile 搭建目录结构--Dockerfile --main.go写一个go的helloworldpackage main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", hello) err := http.ListenAndServe(":8080", nil) //设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) } } func hello(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Method) //GET w.Write([]byte("hello world")) }写Dockerfile# 第一行必须指定基于的基础镜像, alpine FROM golang:alpine # MAINTAINER docker_user docker_user@email.com # 镜像的操作指令 RUN mkdir /app ADD . /app/ WORKDIR /app RUN go build -o main . # 容器启动时执行指令 CMD ["./main"]在创建的目录内, 运行 docker build -t webtest ..-t 指定编译镜像名 运行镜像 docker run -d -p 9090:8080 webtest 访问 localhost:9090/ 编译后再打包成Docker目录为--bin ---- main --cmd ---- build.sh --config ----config.toml --Dockerfile --main.go在cmd中执行build.sh#!/bin/bash echo "begin..." # 编译程序为二进制文件 GOOS=linux go build -ldflags "-w" -o ../bin/main ../main.go # docker 部分 docker build -t dse:0.0.1 ../. # tar docker save -o ../bin/dse.tar dse:0.0.1 echo "end"Dockerfile 文件FROM golang:alpine # 创建目录 RUN mkdir -p /app/config # 创建工作空间 WORKDIR /app # 复制二进制文件到工作目录 ADD bin/main /app/ # 复制配置文件到工作目录 ADD config/config.toml /app/config/config.toml # 启动程序 CMD ["/app/main"]
  • 编译后再打包成Docker
  • 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档