CMD dockerfile不执行

我已经创build了一个docker镜像来播种我的docker化的mongo实例:

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 

之后,我执行我的形象:

 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被执行。

难道我做错了什么?

Dockerfile中只能有一个CMD指令。 如果列出多个CMD则只有最后一个CMD才会生效。 我build议你把这两个命令放在一个单独的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"]