首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在容器启动时初始化MongoDB

无法在容器启动时初始化MongoDB
EN

Stack Overflow用户
提问于 2018-08-04 16:47:15
回答 1查看 876关注 0票数 1

这是我的docker-compose.yaml

代码语言:javascript
复制
version: '3.3'
mongo:
  build:
    context: '.'
    dockerfile: 'Dockerfile'
  environment:
    MONGO_INITDB_DATABASE: 'mydb'
  ports:
    - '27017:27017'
  volumes:
    - 'data-storage:/data/db'
  networks:
    mynet:

volumes:
  data-storage:

networks:
  mynet:

这是我的Dockerfile

代码语言:javascript
复制
FROM mongo:latest
COPY ./initdb.js /docker-entrypoint-initdb.d/

最后是我的inidb.js

代码语言:javascript
复制
db.createCollection("strategyitems");
db.strategyitems.createIndex( {strategy: 1 }, { unique: false } );
db.strategyitems.createIndex( {strategy: 1, symbol: 1 }, { unique: true } );
db.strategyitems.insertMany([
  { strategy: "crypto", symbol: "btcusd", eval_period: 15, buy_booster: 8.0, sell_booster: 5.0, buy_lot: 0.2, sell_lot: 0.2 },
  { strategy: "crypto", symbol: "ethusd", eval_period: 15, buy_booster: 8.0, sell_booster: 5.0, buy_lot: 0.2, sell_lot: 0.2 },
  { strategy: "crypto", symbol: "neousd", eval_period: 15, buy_booster: 8.0, sell_booster: 5.0, buy_lot: 0.2, sell_lot: 0.2 }
]);

容器成功地构建并启动..。但无法执行上面的db语句。

如果我登录到容器,文件夹/docker-entrypoint-initdb.d/包含initdb.js.所以我希望分局会被弱化。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-04 18:11:47

所以所提供的撰写文件对我不起作用,我不得不编辑它来启动和运行它(v18.06CE),所以请注意这一点。

代码语言:javascript
复制
version: '3.3'
services:
  mongo:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      MONGO_INITDB_DATABASE: 'mydb'
    ports:
      - '27017:27017'
    volumes:
      - 'data-storage:/data/db'
    networks:
      mynet:

volumes:
  data-storage:

networks:
  mynet:

接下来,如果在添加docker-compose up文件之前运行initdb.js,然后使用docker-compose down停止,那么docker-compose down将停止容器,但不会删除卷

码头工人ps

代码语言:javascript
复制
| CONTAINER    | ID               | IMAGE                | COMMAND | CREATED | STATUS | PORTS | NAMES |         |                          |                    |
|--------------|------------------|----------------------|---------|---------|--------|-------|-------|---------|--------------------------|--------------------|
| c412bbd9a22b | lumberjack_mongo | docker-entrypoint.s… | 7       | minutes | ago    | Up    | 6     | minutes | 0.0.0.0:27017->27017/tcp | lumberjack_mongo_1 |
代码语言:javascript
复制
docker volume ls

| DRIVER |   | VOLUME | NAME                    |
|--------|---|--------|-------------------------|
| local  |   |        | lumberjack_data-storage |
代码语言:javascript
复制
docker-compose down
Removing lumberjack_mongo_1 ... done
Removing network lumberjack_mynet
代码语言:javascript
复制
docker volume ls

| DRIVER |   | VOLUME | NAME                    |
|--------|---|--------|-------------------------|
| local  |   |        | lumberjack_data-storage |

当存在卷时运行docker-compose up时会出现问题-- Docker在容器启动之前挂载卷。Mongo执行一些预检查,如果它发现目录存在,则跳过initdb序列。

如果在docker-compose down之后删除卷并执行docker-compose up,则卷将从头创建,预检查将一无所获并初始化mongodb。

代码语言:javascript
复制
docker volume rm lumberjack_data-storage
lumberjack_data-storage
代码语言:javascript
复制
docker-compose up

Creating network "lumberjack_mynet" with the default driver
Creating volume "lumberjack_data-storage" with default driver
Creating lumberjack_mongo_1 ... done
Attaching to lumberjack_mongo_1

[....]
mongo_1  | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/initdb.js
mongo_1  | 2018-08-04T18:08:47.699+0000 I INDEX    [LogicalSessionCacheRefresh] build index on: config.system.sessions properties: { v: 2, key: { lastUse: 1 }, name: "lsidTTLIndex", ns: "config.system.sessions", expireAfterSeconds: 1800 }

mongo_1  | 2018-08-04T18:08:47.745+0000 I NETWORK  [conn2] received client metadata from 127.0.0.1:45324 conn2: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "4.0.0" }, os: { type: "Linux", name: "Ubuntu", architecture: "x86_64", version: "16.04" } }
mongo_1  | 2018-08-04T18:08:47.747+0000 I STORAGE  [conn2] createCollection: initdb.strategyitems with generated UUID: 585edb14-bc63-4879-bc5d-504867fb5e12
mongo_1  | 2018-08-04T18:08:47.851+0000 I INDEX    [conn2] build index on: initdb.strategyitems properties: { v: 2, key: { strategy: 1.0 }, name: "strategy_1", ns: "initdb.strategyitems" }
mongo_1  | 2018-08-04T18:08:47.851+0000 I INDEX    [conn2]       building index using bulk method; build may temporarily use up to 500 megabytes of RAM
mongo_1  | 2018-08-04T18:08:47.852+0000 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
mongo_1  | 2018-08-04T18:08:47.881+0000 I INDEX    [conn2] build index on: initdb.strategyitems properties: { v: 2, unique: true, key: { strategy: 1.0, symbol: 1.0 }, name: "strategy_1_symbol_1", ns: "initdb.strategyitems" }
mongo_1  | 2018-08-04T18:08:47.881+0000 I INDEX    [conn2]       building index using bulk method; build may temporarily use up to 500 megabytes of RAM
mongo_1  | 2018-08-04T18:08:47.882+0000 I INDEX    [conn2] build index done.  scanned 0 total records. 0 secs
mongo_1  | 2018-08-04T18:08:47.886+0000 I NETWORK  [conn2] end connection 127.0.0.1:45324 (0 connections now open)
[....] 
mongo_1  | MongoDB init process complete; ready for start up.
mongo_1  |
mongo_1  | 2018-08-04T18:08:48.933+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
mongo_1  | 2018-08-04T18:08:48.939+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=e90c80083360
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51687683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档