2017-05-24 22 views
0

我很新的泊塢窗,我不知道如何利用參數在運行time.My代碼如下所示:如何在運行時在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)) 

} 
} 


Dockerfile看起來是這樣的:

FROM golang:1.7-alpine 

ADD . /home 

WORKDIR /home 

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

我有在代碼中它不起作用的地方發表了評論。我只是想在運行時帶參數,這樣我就可以取消註釋。

+0

請將您的代碼粘貼到您的問題中。 – zuluk

回答

0

指定與像所有ARGS完整的命令:

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

編輯:

當你在你結束指定的東西泊塢窗運行命令,你覆蓋「入口點」或「CMD 「你的部分Dockerfile。你必須指定完整的命令。

+0

謝謝,它的工作,但你可以指定爲什麼'碼頭運行-it myapp http://www.com'shows:從守護進程的錯誤響應:oci運行時錯誤:container_linux.go:247:啓動容器進程導致「exec:\」去運行「:在$ PATH中找不到可執行文件」。 –

0

我已經嘗試了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"]