【发布时间】:2016-09-12 14:40:13
【问题描述】:
我在我的 CoreOS 实例上设置了两个服务。简而言之,第一个是官方的 mongo 容器,另一个是尝试连接到“mongo”实例的自定义镜像。
- name: living-mongo.service
command: start
enable: true
content: |-
[Unit]
Description=Mongo
Author=Living
After=docker.service
[Service]
Restart=always
RestartSec=10s
ExecStartPre=-/usr/bin/docker stop mongo
ExecStartPre=-/usr/bin/docker rm mongo
ExecStart=/usr/bin/docker run --name mongo -p 27017:27017 --hostname mongo mongo:2.6
ExecStop=/usr/bin/docker stop mongo
ExecStopPost=-/usr/bin/docker rm mongo
- name: living-mongo-seed.service
command: start
enable: true
content: |-
[Unit]
Description=Mongo Seed
Author=Living
Requires=living-mongo.service
After=living-mongo.service
[Service]
User=core
Type=oneshot
ExecStartPre=-/usr/bin/docker stop mongo-seed
ExecStartPre=-/usr/bin/docker rm mongo-seed
ExecStart=/usr/bin/docker run --name mongo-seed --link mongo:mongo registry.living-digital-way.com/mongo-qa:v1
ExecStop=/usr/bin/docker stop mongo-seed
基本上,我首先启动 mongo 实例,然后尝试连接到它以提供一些数据:
# docker run --name mongo -p 27017:27017 --hostname mongo mongo:2.6
# docker run --name mongo-seed --link mongo:mongo registry.living-digital-way.com/mongo-qa:v1
当第二个服务启动时,它告诉我:
Sep 12 14:12:21 core-01 docker[1672]: Status: Downloaded newer image for registry.living-digital-way.com/mongo-qa:v1
Sep 12 14:12:21 core-01 docker[1672]: 2016-09-12T14:12:21.704+0000 warning: Failed to connect to 172.17.0.4:27017, reason: errno:111 Connection refused
Sep 12 14:12:21 core-01 docker[1672]: couldn't connect to [mongo] couldn't connect to server mongo:27017 (172.17.0.4), connection attempt failed
Sep 12 14:12:21 core-01 docker[1672]: 2016-09-12T14:12:21.728+0000 warning: Failed to connect to 172.17.0.4:27017, reason: errno:111 Connection refused
Sep 12 14:12:21 core-01 docker[1672]: couldn't connect to [mongo] couldn't connect to server mongo:27017 (172.17.0.4), connection attempt failed
系统启动后,我在shell上手动执行第二个服务:
docker run --name mongo-seed --link mongo:mongo registry.living-digital-way.com/mongo-qa:v1
而且效果很好。
我在做什么?
编辑
自定义 docker 镜像 Dockerfile:
FROM mongo:2.6
MAINTAINER Living Digital Way
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"]
和import.sh:
mongoimport --host mongo --db lvdb --collection clients --type json --file ./clients.init.json --jsonArray --upsert --upsertFields client_id
mongoimport --host mongo --db lvdb --collection users --type json --file ./users.init.json --jsonArray --upsert --upsertFields username
【问题讨论】: