【发布时间】:2017-06-09 00:17:46
【问题描述】:
我在docker-library/golang#164 上打开了一个问题,因为我认为这是一个错误。但是,我想我也会在 StackOverflow 上询问是否有其他人(除了项目贡献者)遇到过这种情况或有什么想法?
首先,版本号:
$ docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Tue Mar 28 00:40:02 2017
OS/Arch: darwin/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:00:50 2017
OS/Arch: linux/amd64
Experimental: true
$ docker-compose version
docker-compose version 1.11.2, build dfed245
docker-py version: 2.1.0
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2j 26 Sep 2016
我收到以下错误:
Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"go\": executable file not found in $PATH"
这是我的Dockerfile:
FROM golang:1.8
WORKDIR /go/src/gigem
COPY . /go/src/gigem
RUN go build
RUN go install
CMD ["gigem"]
我也在使用 Compose(我将包含 yml,但无论是否使用 compose,都会出现错误):
version: '3'
services:
db:
image: postgres
volumes:
- ./data:/var/lib/postgresql/data
web:
build: .
volumes:
- .:/go/src/gigem
ports:
- "3000:3000"
depends_on:
- db
我的 Go 程序中的所有内容是:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello Docker!")
})
fmt.Println("Running!")
fmt.Println(http.ListenAndServe("0.0.0.0:3000", nil))
}
我不太清楚为什么在 $PATH 中找不到 go。
【问题讨论】:
-
你运行什么命令来得到那个错误?我进行了构建并运行并得到了
Running!输出。 -
认真的吗?我实际上是在构建和运行可执行文件
gigem,这太奇怪了。以前从未在 docker 上经历过这种情况。 -
尝试另一台机器,仔细检查您的基础映像,清除 /var/lib/docker(所有映像、卷和容器都存储在那里,因此请先备份)和/或重新启动。我见过层的周期性损坏,但幸运的是它很少见。
-
所以,你是对的。我重新启动了机器,一切正常。这太奇怪了。
标签: docker go docker-compose dockerfile