gpt4 book ai didi

mongodb - 容器启动后运行命令

转载 作者:行者123 更新时间:2023-12-02 18:46:25 25 4
gpt4 key购买 nike

我正在尝试在 docker 容器启动后执行命令。
这是我的 Dockerfile

FROM mysite:myport/mongo:3.6
EXPOSE 27017
ADD mongo.js /data/mongodb/scripts/

这是我的 docker-compose.yml

mongo:
image: test-mongo
container_name: test-mongo
hostname: mongo
expose:
- "27017"
ports:
- "27017:27017"
command: mongo --eval load("/data/mongodb/scripts/mongo.js")

docker-compose --no-ansi up 返回我

Creating test-mongo ...
Creating test-mongo ... done
Attaching to test-mongo
test-mongo | MongoDB shell version v3.6.5
test-mongo | connecting to: mongodb://127.0.0.1:27017
test-mongo | 2018-06-09T15:46:50.229+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), rea
son: Connection refused
test-mongo | 2018-06-09T15:46:50.229+0000 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
test-mongo | connect@src/mongo/shell/mongo.js:251:13
test-mongo | @(connect):1:6
test-mongo | exception: connect failed
test-mongo exited with code 1

我不明白如何 mongodb 启动后加载我的文件

最佳答案

通过传递 command在你的docker-compose.yaml ,您正在覆盖 mongo 的正常行为图像——因此 mongo 服务器永远不会启动。通常处理此问题的方法是将脚本放入第二个 图像,然后启动第二个容器作为docker-compose.yaml 的一部分|与 mongo 服务器建立网络连接。像这样的东西:

version: "3"

services:
mongo:
image: mongo

client:
image: my-mongo-client
restart: on-failure
command: mongo --host mongo --eval load("/data/mongodb/scripts/mongo.js")

restart指令将导致客户端容器重新启动失败时自动,这是必要的,因为它可能会尝试在 mongo 服务器可用于处理连接之前连接。

关于mongodb - 容器启动后运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com