2016-06-21 6 views
0

公式のDocker HubリポジトリからGolangアプリケーションを提供するとき、アプリケーションが起動するデフォルトの作業ディレクトリは何でしょうか?Docker Golangアプリケーションの作業ディレクトリとは何ですか?

背景:TLS httpsに対応するために、ローカル認証局とサーバーキーをコンテナにマップする必要があります。アプリケーションにマップする場所が、アプリケーション内の現在の作業ディレクトリで取得できますか?コンテナ?

+0

ゴールデンイメージがWORKDIRに設定されているものは何ですか? [DOCKERFILE](https://github.com/docker-library/golang/blob/0ce80411b9f41e9c3a21fc0a1bffba6ae761825a/1.6/Dockerfile)に表示されます – JimB

+0

これはビルドのWORKDIRですが、実行ファイルが最終的に格納される場所ではありませんと呼ばれるか?それは、ビルドやインストールに依存します。私はDockerfileの意味をほとんど理解していません。 – JohnDoe

+2

"[WORKDIR](https://docs.docker.com/engine/reference/builder/#workdir)命令は、RUN、CMD、ENTRYPOINT、COPY、ADDの作業ディレクトリを設定しますDockerfileでそれに続く指示 "DOCKERFILEでWORKDIRを自分で設定することも、絶対パスを使ってファイルを見つけることもできます。 – JimB

答えて

1

あなたはgolangを使用している場合:DockerHubから1.X-onbuild画像は、これはあなたが

docker build 
を実行したディレクトリからすべてのファイルとディレクトリを意味します( https://hub.docker.com/_/golang/

/go/src/app 

にコピーされます

コマンドがコンテナにコピーされます。

そして、すべての画像のWORKDIRがある

/go 
+0

私がdockerを実行すると... -v /home/local/cert.pem:/go/cert,pemを実行し、プログラムでcert.pemを開こうとすると、「ファイルが見つかりません」というメッセージが表示されます。ですから、アプリケーションが実行しているPWDは/ go/PWDではありませんか? – JohnDoe

+2

@ JohnDoe: 'pwd'または' ls'を実行して、あなたがどこにいるのか、ディレクトリにあるのかを確認します。 – JimB

+0

ありがとう、ありがとう! – JohnDoe

0

Goが使用して現在の作業ディレクトリを返します

currdir, _ = filepath.Abs(filepath.Dir(os.Args[0])) 

golangコンテナ内で実行され、右の起動後、PWDが

に設定されています
/go/src/app 

iで起動するgolangアプリケーションの現在の作業ディレクトリn Dockerコンテナはこうして/go/src/appです。コンテナにファイル/ディレクトリをマップするためには、Documentation for runで説明したように-v -switchを使用するhabeます:

-v /local/file.pem:/go/src/app/file.pem 

はdockerized golangアプリのPWDにローカルファイルをマッピングします。

関連する問題