我有一个Dockerfile,它从最新的golang docker镜像构建了一个golang项目(它监听Twitter流并通过一些过滤器列出推文(,现在是1.10.3,就像这样:
FROM golang:1.10.3
COPY . /destination/
WORKDIR /destination/
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
CMD ["./main"]
当我运行dockerbuild命令创建的映像时,它运行起来没有问题。问题是图像的大小约为900MB。
当我尝试用多级构建构建docker时,比如:
FROM golang:1.10.3-alpine3.7 as builder
...
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM busybox
COPY --from=builder /go/src/github.com/mygithubname/ /
WORKDIR /path-to-the-main-file/
CMD ["./main"]
docker镜像构建成功并运行,但它在发布推文时不会显示给我,也不会显示任何错误,这是最令人困惑的部分。即使当我ssh到正在运行的容器并ping谷歌时,它也会显示出它应该显示的一切
有人告诉我如何调试这个问题,或者从运行的Docker映像中获取更多日志吗?
1( 集装箱出口了吗?如果你做一个码头工人,它似乎在运行。
2( 你检查了码头日志{容器id}吗
3(/go/src/github.com/mygithubname/是否实际反映了构建在docker容器第一阶段的位置?示例docker文件,其中副本反映构建环境的工作目录:
FROM golang AS build-env
ADD . /src/project
WORKDIR /src/project
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
# final stage
FROM busybox
WORKDIR /app
COPY --from=build-env /src/project/ .
CMD ["./main"]