繁体   English   中英

Golang docker库映像无法在$ PATH中找到go工具

[英]Golang docker library image cannot find go tool in $PATH

我在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。

我最近测试了您的Dockerfile和main.go,但没有发现任何错误。

我认为您应该尝试使用docker build --pull .再次拉出golang: 1.8 docker build --pull .

我修改了您的Dockerfile,添加了两行来调试映像,请尝试:

FROM golang: 1.8
    
WORKDIR / go / src / gigem
COPY. / Go / src / gigem

RUN echo $ PATH
RUN which go
RUN go build
RUN go install

CMD ["gigem"]

Echo $ PATH ,如果二进制文件goEcho $ PATHwhich go会显示给您

从注释中,我自己测试了此代码,没有错误(公认的是在17.06-rc2上,但是行为不应更改)。 鉴于重启解决了这个问题,码头工人内部似乎出现了一些损坏,需要反弹来纠正(虽然很少见,但这不是我第一次看到它)。 对于将来遇到问题的其他人,我喜欢按以下顺序尝试:

  1. 提取新图像和/或重建而不缓存层的任何问题
  2. 重新启动docker,以防守护程序内部损坏
  3. 重新启动整个主机,以解决在docker守护程序之外仍然存在的运行时配置问题
  4. 在dockerd停止的情况下,擦除/var/lib/docker docker,这将销毁所有容器,图像和卷(因此请先备份)并开始清理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM