mongodb - CMD dockerfile未执行

标签 mongodb docker

我创建了一个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

难道我做错了什么?

最佳答案

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"]

关于mongodb - CMD dockerfile未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411523/

相关文章:

python - 当从另一个函数调用 mongodb 时如何模拟 mongodb?

docker - Docker镜像不复制以开头的文件名

r - 使用Selenium和docker工具箱下载文件

docker - 如何防止 docker hub 上的 docker 镜像被覆盖?

java - 使用 Java 在 MongoDB 中进行查询优化

arrays - meteor 返回mongodb中数组的长度

javascript - 我如何使用 Node 异步来获取我的 Mongoose 调用?

mongodb - 如何比较 2 个 mongodb 集合?

docker - 从 Windows 卸载 docker - Docker 工具箱

linux - 如何在 GitLab runner 容器中安装包?