2016-09-09 9 views
0

を実行していない私は私のdockerized Mongoのインスタンスをシードするために、ドッキングウィンドウの画像を作成しました:CMDのdockerfileが

FROM mongo:2.6 
MAINTAINER Living Digital Way 
COPY ./clients.init.json . 
COPY ./users.init.json . 

CMD mongoimport --host mongo --db lvdb --collection clients --type json --file ./clients.init.json --jsonArray --upsert --upsertFields client_id 
CMD mongoimport --host mongo --db lvdb --collection users --type json --file ./users.init.json --jsonArray --upsert --upsertFields username 

私が最初に私のmongoインスタンスをキックオフ:その後

docker run --name mongo -p 27017:27017 --hostname mongo mongo:2.6 

を、I私のイメージを実行します。

docker run --link mongo:mongo registry.private.com/mongo_seed:demo 

は、これが出力されます。

# docker run --name mongo-seed --link mongo:mongo registry.private.com/mongo-seed:demo 
Unable to find image 'registry.private.com/mongo-seed:demo' locally 
v1: Pulling from mongo-seed 
046d0f015c61: Already exists 
ba95eb02831f: Already exists 
53dc8636c4de: Already exists 
a1ba40c46d70: Already exists 
58b7d37cc7a7: Already exists 
6fc4041cef29: Already exists 
4cb494f83a39: Already exists 
29839a673e80: Pull complete 
cc731752cc1a: Pull complete 
Digest: sha256:9a88d141b426fb7e96d2418f63c1587f6c055602d77c13ddd4ef744d66d6acc2 
Status: Downloaded newer image for registry.private.com/mongo-seed:demo 
connected to: mongo 
2016-09-09T12:11:42.194+0000 imported 1 objects <<<<<<<<<<<<<<<< 

ご覧のとおり、最後のCMDが表示されます。

何か間違っていますか?

答えて

4

DockerfileにはCMD命令が1つしか存在できません。複数のCMDをリストすると、最後のCMDだけが有効になります。 2つのコマンドを別々のimport.shに入れ、コンテナにコピーしてCMDを使って実行することをお勧めします。

COPY ./clients.init.json . 
COPY ./users.init.json . 
COPY ./import.sh . 
RUN ["chmod", "+x", "import.sh"] # -> only required, if import.sh is not executable 

CMD ["import.sh"] 
+0

は、今では私に語った: '/entrypoint.sh:行21:/import.sh:許可denied'を... – Jordi

+0

はあなたにMongoDBのためのファイルをchownコマンド-EDましたか? – Lexandro

+0

私は答えを更新しました。別の方法は、コピーする前にimport.shでexecuteフラグを設定することです。 – Matt

関連する問題