dockerfile 使用 entrypoint,导致 docker 无法正确挂载的问题

一开始 Dockerfile 如下:

FROM golang:latest

WORKDIR $GOPATH/src/hellodocker
COPY . .
RUN go build .
EXPOSE 88 ENTRYPOINT ["./hellodocker"]

运行 docker run -d -v /home/hellodocker:/go/src/hellodocker -p 88:88 hellodocker,报错:

Error response from daemon: oci runtime error: exec: "./hellodocker": stat ./hellodocker: no such file or directory

分析原因: 运行容器挂载目录的时候,hellodocker.exe还没有编译生成,但是会去检查
ENTRYPOINT 入口文件,不存在就报错了

修改 Dockerfile 如下:
WORKDIR $GOPATH/src/hellodocker
ADD . $GOPATH/src/hellodocker
# RUN go build .

EXPOSE 88
CMD ["/bin/bash", "build.sh"] # ENTRYPOINT ["./hellodocker"]

  其中 build.sh 如下:

#!/usr/bin/env bash
cd /go/src/hellodocker && go build . && ./hellodocker

 

问题解决




posted @ 2018-04-27 15:04  hobotree  阅读(2846)  评论(0编辑  收藏  举报