2017-03-02 1 views
0

コマンドラインからドッカーコンテナを完全に構築する方法はありますか?つまり、FROMRUNCMDなどを設定できるようにする必要があります。ドッカーはコマンドラインから完全にビルドします

npm installとの一つとして、(私は(などgitnpm、)すべてを実行するためにドッキングウィンドウコンテナを使用する必要がシナリオだ、と私は準備作業が行われている場でコンテナを構築したいと思いますすでに実行されています)。

さまざまなケースがありますが、実際にはそれぞれDockerfileを作成するのは残念です。代わりにスクリプトでコマンドラインコマンドを作成することができます。

+0

CLIから一時的なDockerfileに行をエコーアウトできないのはなぜですか? – BMitch

+0

私はそうすることを考えていましたが、できれば実際にファイルをシステムに書きたくないのです。私は 'cmd <(echo 'message')'という構文を試しましたが、Dockerfileのようなものが急増しているようです。 – samanime

答えて

1

docker buildは、Dockerfileを実際のファイルにする必要があります。彼らは、標準入力によって渡される(.またはカレントディレクトリ別名)のビルドコンテキストを許可しますが、この構文でDockerfileに合格しようとすると失敗します

docker build -f Dockerfile.temp . 

あなたが別のファイル名を使用することができます
$ docker build -t test-no-df -f - . <<EOF 
FROM busybox:latest 
CMD echo just a test 
EOF 

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/bmitch/data/docker/test/-: no such file or directory 

2017年5月5日の更新:ドッカーがちょうど含まれ、このPR #31236と17.05.0-CEをリリースしました。今度は上記のコマンドでイメージが作成されます:

$ docker build -t test-no-df -f - . <<EOF 
FROM busybox:latest 
CMD echo just a test 
EOF 
Sending build context to Docker daemon 23.34MB 
Step 1/2 : FROM busybox:latest 
---> 00f017a8c2a6 
Step 2/2 : CMD echo just a test 
---> Running in 45fde3938660 
---> d6371335f982 
Removing intermediate container 45fde3938660 
Successfully built d6371335f982 
Successfully tagged test-no-df:latest 
+0

それは私がそれを恐れていたことのようなものです。残念ながらそれは不幸です。 – samanime

+0

Dockerfileはコンテキスト内のパスであるため、圧縮されたtarファイルとしてコンテキストを動的に生成できるので、Dockerfileをファイルシステム上に存在しないものに含めることができます。これにより、ドッカーcliからtar cliにファイルを注入するという課題が生じます。 – BMitch

+0

私は絶対にファイルシステムに書き込めなかった場合、潜在的に動作する可能性がありますが、できれば迷惑をかけるだけです。 – samanime

関連する問題