,这是我第一次使用 docker 将应用程序打包到容器中。我正在开发应用程序位于目录下的 linux VM:/home/core/app/app-name 在 dir app-name 中有 main.go 程序和 Dockerfile。Dockerfile 包含以下内容:FROM golang:latestRUN mkdir /appADD . /home/core/app/app-nameWORKDIR /app/app-nameRUN go build -o main .CMD ["/app/main"]EXPOSE 8080我尝试从 dir /home/core/app/app-name 运行:docker build -t app-image .但我得到了这个错误:无法加载包:包。:/app/stars-app 中没有可构建的 Go 源文件命令“/bin/sh -c go build -o main.” 返回一个非零代码:1我究竟做错了什么?编辑: 我能够使用 Dockfile 在我的 Windows 机器上构建图像:FROM golang:latestAdd . /app/app-nameEXPOSE 8080CMD ["/app/app-name/main"]通过运行:docker build -t star-image .当我运行“docker images”时,我可以看到图像,但是当我尝试使用以下命令运行它时:docker run -p 3000:8080 --name goapp --rm app-name我收到此错误:docker: Error response from daemon: Container command '/app/app-name/main' not found or does not exist..
2 回答
哔哔one
TA贡献1854条经验 获得超8个赞
我也有这个问题,但不知何故基于这个指南,这对我有用。
# ...AS builder ...
FROM golang:1.14
WORKDIR /go/src/app
# In your case, ./main.go or just .
COPY ./server.go .
COPY --from=builder ./app/build .
RUN go get -d -v ./...
RUN go install -v ./...
CMD ["app"]
婷婷同学_
TA贡献1844条经验 获得超8个赞
这可能对你有用...
图像的 GOPATH 设置为 /go
在 /go/src 下安装你的源代码
假设 gopath 已设置并且源在 GOPATH 内
将工作目录设置为 /app
执行构建,输出应该存在于工作目录中
Dockerfile
FROM golang:latest
ADD ./app /go/src/app
RUN mkdir /app
WORKDIR /app
RUN go build -o main app/app-name
CMD ["/app/main"]
EXPOSE 8080
应用程序/应用程序名称/main.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
docker build -t app-image .
docker run app-image
输出
hello, world
- 2 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消