【发布时间】:2019-05-17 13:40:37
【问题描述】:
我的 Go Module 项目遇到的错误
/bin/sh: 微服务:未找到
Dockerfile
FROM golang:1.7.4-alpine
MAINTAINER John Doe
ENV SOURCES /go/src/github.com/john/app/
COPY . ${SOURCES}
RUN cd ${SOURCES} && cgo_enabled=0 go install
ENV PORT 8080
EXPOSE 8080
ENTRYPOINT microservice
microservice.go
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
http.HandleFunc("/", index)
http.ListenAndServe(port(), nil)
}
func port() string {
port := os.Getenv("PORT")
fmt.Println(port)
if len(port) == 0 {
port = "8080"
}
return ":" + port
}
func index(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, "Hello World.")
}
这是一个 Go 模块项目。我使用以下命令创建了一个图像。
docker build -t app:1.0.3 .
并通过
运行它docker run -it -p 8080:8080 app:1.0.3
【问题讨论】:
-
尝试使用完整路径传递 ENTRYPOINT 文件。还要确保它被正确复制。
-
你的意思是像这样更新 docker 文件
ENTRYPOINT ${SOURCES}microservice -
在docker文件中试试
echo $PATH, $GOBIN,你可能会发现一些东西 -
@zzn 我是 docker 新手,我添加了 echo,它给了我这个错误。
Error response from daemon: Dockerfile parse error line 13: unknown instruction: ECHO -
为什么要投反对票?
标签: docker go microservices