我创建了一个docker镜像,以便为我的dockerized 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
。
我做错了吗?
答案 0 :(得分: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"]