您好我很新,这是我第一次使用docker将应用程序打包到容器中。我正在开发一个linux VM,其中app位于dir:/ home / core / app / app-name在dir app-name中有main.go程序和Dockerfile。 Dockerfile包含:
FROM golang:latest
RUN mkdir /app
ADD . /home/core/app/app-name
WORKDIR /app/app-name
RUN go build -o main .
CMD ["/app/main"]
EXPOSE 8080
我尝试从dir / home / core / app / app-name:
运行docker build -t app-image .
但我收到了这个错误:
无法加载package:package。:在app / stars-app中没有可构建的Go源文件 命令'/ bin / sh -c go build -o main。'返回非零代码:1
我做错了什么?
修改 我得到了能够使用Dockfile在我的Windows机器上构建图像:
FROM golang:latest
Add . /app/app-name
EXPOSE 8080
CMD ["/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..
答案 0 :(得分:0)
这可能对你有用......
<强> 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
答案 1 :(得分:0)
我对此也有疑问,但基于此guide,这对我很有用。
# ...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"]