go alpine docker image 搭建

Dockerfile 搭建

目錄結構linux

--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 指定編譯鏡像名golang

  1. 運行鏡像 docker run -d -p 9090:8080 webtestweb

  2. 訪問 localhost:9090/docker

編譯後再打包成Docker

目錄爲bash

--bin
---- main
--cmd
---- build.sh
--config
----config.toml
--Dockerfile
--main.go

在cmd中執行build.shapp

#!/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 文件ui

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 Dockerfilesthis

相關文章
相關標籤/搜索