2016-09-09 82 views
0

我已經以良種我dockerized蒙戈實例創建一個泊塢窗圖像: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 

我第一次踢了我蒙戈實例:

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

在那之後,我執行我的形象:

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指令。如果列出多個CMD,則只有最後一個CMD纔會生效。我建議你把這兩個命令放在一個單獨的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

你CHOWN-ED文件到MongoDB的? – Lexandro

+0

我已經更新了答案。另一種方法是在複製之前在import.sh上設置執行標誌。 – Matt