注意
- 1.ENV GO111MODULE on 若是mod管理依賴包,必須開啟mod
- 2.ENV CGO_ENABLED 0 必須配置為0,否則docker容器中編譯失敗
- 3.COPY 文件至容器時,保證文件拷貝至容器/go/src/ 環境下;
曾配置COPY . /apps 但是創建運行容器時,沒報錯,但是拷貝失敗,具體原因不知,歡迎大神解答
一、Dockerfile
FROM golang
//修改系統為上海時區
RUN echo "Asia/Shanghai" > /etc/timezone \
&& rm /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
ENV GO111MODULE on //開啟go mod 模式
ENV CGO_ENABLED 0 //必須配置為0,否則docker容器中編譯失敗,CGO_ENABLED=0的情況下,Go采用純靜態編譯,避免各種動態鏈接庫依賴的問題
WORKDIR /go/src/projectname //切換到工作路徑,建議到/go/src 路徑下,曾在將項目文件拷貝至容器時,由於配置其他項目,導致一直拷貝不成功
COPY . . //將容器外項目文件拷貝至容器中
RUN go mod tidy //安裝依賴
RUN go build //編譯
二、docker-compose
version: '2.4'
services:
http:
build:
context: .
dockerfile: Dockerfile
restart: always
ports:
- "8022:8080"
command:
/go/src/projectname/projectname //運行已經編譯的文件