Go 在docker中如何在运行时获取参数?

Go 在docker中如何在运行时获取参数?,go,dockerfile,Go,Dockerfile,我是docker的新手,不知道如何在运行时获取参数。我的代码如下所示: package main import ( "fmt" //"flag" "os" "net/http" "io/ioutil" "reflect" ) func main() { var args string // flag.Parse() // args := flag.Args() fmt.Println("Enter the URL : ") fmt.Scanf("%s ",&arg

我是docker的新手,不知道如何在运行时获取参数。我的代码如下所示:

package main

import (
"fmt"
//"flag"
"os"
"net/http"
"io/ioutil"
"reflect"
)

func main() {

var args string
//  flag.Parse()      
//   args := flag.Args()
fmt.Println("Enter the URL : ")
fmt.Scanf("%s ",&args)
fmt.Println(args)       
if len(args) < 1 {        
fmt.Println(reflect.TypeOf(args),"Please Enter the URL")  
os.Exit(1)                                
}
retrieve(args)        //call the retrieve function                                   

}

func retrieve(url string){          //gives the  source code as 
output.

resp, err := http.Get(url)         
if err != nil{
  fmt.Println("read error is:", err)
  return 
}
body, err := ioutil.ReadAll(resp.Body);
if err != nil{ 
  fmt.Println("read error is:", err)
  return 
} else{
  fmt.Println(string(body))

}
}
FROM golang:1.7-alpine

ADD . /home

WORKDIR /home

CMD ["go","run","fetchSource.go"]

我已经对不起作用的代码进行了注释。我只想在运行时获取参数,以便取消对这些行的注释。

使用所有参数指定完整命令,如:

docker run myimage:latest go run fetchSource.go arg1 arg2 arg3
编辑:


当您在docker run命令的末尾指定某个内容时,您正在覆盖Dockerfile的“Entrypoint”或“Cmd”部分。您必须指定完整的命令。

我尝试了Dockerfile中的以下更改,它也起了作用

FROM golang:1.7-alpine

ADD . /home

WORKDIR /home
# This builds a binary first
RUN ["go", "build"]
# Now you can run the executable and pass arguments at the run time.
ENTRYPOINT ["./home"]

请将您的代码粘贴到您的问题上。谢谢,它起作用了,但您能否指定为什么
docker运行-it myapphttp://www.com
shows:daemon的错误响应:oci运行时错误:container\u linux.go:247:启动容器进程导致“exec:\“go run\”:在$PATH中找不到可执行文件。