Whi*_*lez 2 go docker docker-compose
我的项目结构如下: https ://i.stack.imgur.com/SqqDh.png
这是我的 Dockerfile:
FROM golang:1.19
ADD . /go/src/myapp
WORKDIR /go/src/myapp
RUN go mod init cloudmeta
RUN go get github.com/go-sql-driver/mysql
RUN go get -u github.com/gin-gonic/gin
RUN go build -o bin/cloudmeta
CMD [ "bin/cloudmeta" ]
Run Code Online (Sandbox Code Playgroud)
当我尝试构建我的 docker-container 时,出现以下错误:
package cloudmeta/backend/handlers is not in GOROOT (/usr/local/go/src/cloudmeta/backend/handlers)
Run Code Online (Sandbox Code Playgroud)
小智 5
在 docker 中构建 Go 代码时,不应使用go mod init. 看一下docker 文档中的以下 dockerfile示例:
# syntax=docker/dockerfile:1
FROM golang:1.16-alpine
WORKDIR /app
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY *.go ./
RUN go build -o /docker-gs-ping
EXPOSE 8080
CMD [ "/docker-gs-ping" ]
Run Code Online (Sandbox Code Playgroud)
docker 文档指南更深入,但总结一下:
go.mod和go.sum文件复制到图像中的项目目录中。go mod download命令来安装所需的 go 模块。go build命令编译源代码。