2016-06-17 8 views
1

こんにちは私はかなり新しいです。ドッカーと一緒にアプリをコンテナにパッケージ化するのは初めてのことです。私はアプリがdirの下にあるlinux VMに取り組んでいます:/ home/core/app/app-name dir app-nameにはmain.goプログラムとDockerfileがあります。私はDIR /ホーム/コア/アプリ/アプリ名からランニング試してみましたドッカーに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 

docker build -t app-image . 

しかし、私はこのエラーを得た:

をロードすることはできませんDockerfileは、この含まれていパッケージ:パッケージ:ビルド不可/ app/stars-app内のソースファイルを移動 コマンド '/ bin/sh -c go build -o main。'ゼロ以外のコードを返しました:1

私は間違っていますか?

編集:

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

して実行することにより: 私が得たがDockfileと私のWindowsマシン上でイメージを構築することができたとき、私

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

あなたは '/ホーム/コア/アプリ/アプリ-NAME'にすべてを追加しているが、あなたのWORKDIRは' /アプリ/アプリ-NAME'です。また、GOPATHを設定せず、ビルドするパッケージを指定しないでください。コンテナにアプリケーションを構築する場合は、[Go Codeを書く方法](https://golang.org/doc/code.html)の説明に従って適切な環境設定を行う必要があります – JimB

+0

'/ app/app-name'の代わりに'/home/core/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

私はそれを実行したときに私が得た:golang FROM::最新 ---> 5850add7ecc2 ステップ2:SRC /アプリ LSTATアプリ/行く/ ./appを追加: はドッカーデーモン100.9キロバイト ステップ1にコンテキストを構築送信なしそのようなファイルまたはディレクトリ –

+0

@ChristopherStephensonは、Dockerfileがあるディレクトリにローカルにあります。 "app-name"という名前のサブフォルダに "main.go"という1つのファイルを含む "app"という名前のフォルダがあります。あなたのアプリを模倣しようとしていました提供された情報に基づいて[gist](https://gist.github.com/anonymous/62bd07425ac0dc62304a28501dc4c456) – ABC

+0

@gist、私はそれを稼働させてイメージを構築することができましたが、まだそれを実行する上で問題があります。最新の情報は私の編集を参照してください –

関連する問題