2016-06-17 120 views
1

您好我很新,這是我第一次使用docker將應用程序打包到容器中。我正在開發一個應用程序位於dir下的linux虛擬機:/ home/core/app/app-name在dir應用程序名稱中有main.go程序和Dockerfile。該Dockerfile包含此:在Docker中部署Go應用程序時出現問題

FROM golang:latest 
RUN mkdir /app 
ADD . /home/core/app/app-name 
WORKDIR /app/app-name 
RUN go build -o main . 
CMD ["/app/main"] 
EXPOSE 8080 

我試圖從目錄的/ home /核心/應用程序/應用程序名稱運行:

docker build -t app-image . 

但我得到這個錯誤:

無法加載package:package。:在/ app/stars-app中沒有可構建的Go源文件 命令'/ bin/sh -c go build -o main。'返回非零代碼:1

我在做什麼錯?

編輯: 我是能夠建立我的Windows機器與Dockfile上的圖像:

FROM golang:latest 
Add . /app/app-name 
EXPOSE 8080 
CMD ["/app/app-name/main"] 

,並通過運行:

docker build -t star-image . 

我可以看到圖像,當我運行「泊塢窗圖像」,但是當我嘗試運行它時使用:

docker run -p 3000:8080 --name goapp --rm app-name 

我得到這個錯誤:

docker: Error response from daemon: Container command '/app/app-name/main' not found or does not exist.. 
+2

您要添加的一切'/家庭/核心/應用/ APP-name',但你的WORKDIR是'/應用/ APP-name'。您也不要設置GOPATH,也不要指定要構建的包。如果您要在容器中構建應用程序,您仍然需要按照[如何編寫Go代碼](https://golang.org/doc/code.html) – JimB

+0

中所述的方式設置適當的環境設置,我認爲你把'/ home/core/app/app-name'中的文件而不是'/ app/app-name'。嘗試使目標一致,也許'RUN去建立-o main/app/app-name'和'CMD [「/ app/app-name/main」]' – Plato

+0

@Plato,我試過了,但我仍然得到了相同的輸出。 –

回答

0

這可能會爲你工作...

  • 對被設置爲圖像的GOPATH /去
  • 安裝在你的源極(S)/去/ SRC
  • 給出的GOPATH被設置並且來源是GOPATH
  • 工作目錄設置爲/應用
  • 執行內建立和輸出應該在工作 目錄

存在Dockerfile

FROM golang:latest 
ADD ./app /go/src/app 
RUN mkdir /app 
WORKDIR /app 
RUN go build -o main app/app-name 
CMD ["/app/main"] 
EXPOSE 8080 

應用程序/應用程序名稱/ main.go

package main 

import "fmt" 

func main() { 
    fmt.Printf("hello, world\n") 
} 

docker build -t app-image . 
docker run app-image 

輸出

hello, world 
+0

當我運行它,我得到了: 發送建立上下文碼頭工人守護100.9 KB 1步:從golang:最新 ---> 5850add7ecc2 2步:添加./app /去/ src目錄/應用 LSTAT應用:無這樣的文件或目錄 –

+0

@ChristopherStephenson在Dockerfile所在的目錄中本地位置我有一個名爲「app」的文件夾,其中包含名爲「app-name」的子文件夾,其中包含一個文件「main.go」..試圖模仿你的應用程序結構基於所提供的信息。 [gist](https://gist.github.com/anonymous/62bd07425ac0dc62304a28501dc4c456) – ABC

+0

@gist,我能夠得到它的工作,並建立圖像,但我仍然有運行它的問題。查看我的編輯更新的信息 –

相關問題