go alpine docker image 搭建

Dockerfile 搭建

目录结构

--Dockerfile
--main.go
  1. 写一个go的helloworld
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
# 第一行必须指定基于的基础镜像, 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

目录为

--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"]

参考

Containerize This! How to build Golang Dockerfiles

转载于:https://my.oschina.net/solate/blog/3051560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值