天天看點

編譯後的go程式無法在alpine基礎鏡像建立的容器運作問題

問題描述:

我要使用容器建立一個使用golang的http的服務,為了不讓鏡像太大,是以選擇了基礎鏡像alpine,才幾m,但把go的程式編譯之後無法在容器中運作,解決辦法是在編譯go程式時,加上參數​-tags netgo。

具體做法如下:

1、首先下載下傳apline基礎鏡像:

docker pull docker.io/alpine

2、編譯go程式:(我的程式是sensor.go,編譯之後放在sensors目錄下)

go build -tags netgo -o sensors/sensor sensor.go

3、dockerfile檔案,儲存為sensor:

FROM  docker.io/alpine:latest

MAINTAINER weinengl

# 拷貝相關檔案。

COPY sensors/sensor /tmp/

RUN chmod +x /tmp/sensor

ENTRYPOINT ["/tmp/sensor"]

4、鏡像制作指令:

docker build -t reg.netlab.com/temperature:v1 -f sensor .

制作完成之後運作即可:

docker run -itd -p 8881:8881 --name test10 reg.netlab.com/temperature:v1