注意
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
#开启go mod 模式
ENV GO111MODULE on
#必须配置为0,否则docker容器中编译失败,CGO_ENABLED=0的情况下,Go采用纯静态编译,避免各种动态链接库依赖的问题
ENV CGO_ENABLED 0
#切换到工作路径,建议到/go/src 路径下,曾在将项目文件拷贝至容器时,由于配置其他项目,导致一直拷贝不成功
WORKDIR /go/src/projectname
#设置代理
ENV GOPROXY https://goproxy.io
#将容器外项目文件拷贝至容器中
COPY . .
#安装依赖
RUN go mod tidy
#编译,默认module的名称bbs
RUN go build .
#暴露端口
EXPOSE 8001
#最终运行docker的命令
ENTRYPOINT ["./bbs"]
二、docker-compose.yml
version: '2.4'
services:
http:
build:
context: .
dockerfile: Dockerfile
restart: always
ports:
- "8002:8001"
command:
/go/src/projectname/bbs //运行已经编译的文件
三、启动命令
docker build -t go-bbs6 .
docker run -p 8001:8001 --name bbs6 -d go-bbs6
docker-compose -f docker-compose.yml up -d