我想用已經設置好的用戶和基本數據庫結構(從Dockerfile)構建一個mongodb容器。Mongodb Docker - 創建初始用戶並設置初始結構
這裏是我的Dockerfile:
FROM mongo:latest
RUN mongo localhost:27017 "db.help()"
(精縮它用於測試目的)。
我不斷收到錯誤:
connecting to: localhost:27017
2017-06-01T14:49:34.353+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-06-01T14:49:34.353+0000 E QUERY [thread1] Error: couldn't connect to server localhost:27017, connection attempt failed :
[email protected]/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
...和容器構建失敗。我甚至不知道如何檢查日誌,因爲我是從Dockerfile構建的,一旦容器無法構建,就無法進入內部檢查日誌。
不過,如果我刪除運行命令和手動操作:
docker -exec -it mongodb_container bash
mongo
> db.help()
...它的工作原理。
我已經嘗試將所有權設置爲mongodb:mongodb並嘗試將〜/ db目錄中的日誌和db路徑移動至未成功。 PS:我正在使用docker-compose。想用docker-compose做到這一點,所以開發人員不必自己管理事情。
這裏是碼頭工人,撰寫段:
mongodb:
build: ./mongodb
ports:
- "27017:27017"
編輯:
如果我將其更改爲0.0.0.0:27017
,然後我得到這個錯誤:
MongoDB shell version v3.4.4
connecting to: 0.0.0.0:27017
2017-06-01T15:52:52.806+0000 E QUERY [thread1] Error: couldn't connect to server 0.0.0.0:27017, address resolved to 0.0.0.0 :
[email protected]/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
EDIT2:
當我嘗試用以下Dockerfile:
FROM mongo:latest
RUN mkdir -p /data/db2 \
&& echo "dbpath = /data/db2" > /etc/mongodb.conf \
&& chown -R mongodb:mongodb /data/db2
COPY . /data/db2
RUN mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db2
MongoDB的最初啓動,但隨後退出輸出:
mongodb_1 | 2017-06-01T15:55:52.955+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=64a317041edd
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] db version v3.4.4
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] git version: 888390515874a9debd1b6c5d36559ca86b44babd
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1t 3 May 2016
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] allocator: tcmalloc
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] modules: none
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] build environment:
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] distmod: debian81
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] distarch: x86_64
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] target_arch: x86_64
mongodb_1 | 2017-06-01T15:55:52.956+0000 I CONTROL [initandlisten] options: {}
mongodb_1 | 2017-06-01T15:55:52.964+0000 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
mongodb_1 | 2017-06-01T15:55:52.964+0000 I - [initandlisten] Fatal Assertion 28578 at src/mongo/util/net/listen.cpp 194
mongodb_1 | 2017-06-01T15:55:52.964+0000 I - [initandlisten]
mongodb_1 |
mongodb_1 | ***aborting after fassert() failure
mongodb_1 |
mongodb_1 |
stuff_mongodb_1 exited with code 14
Mongo在容器內部監聽的端口是什麼?似乎它不綁定到端口27017。 –
Afaik父Dockerfile確實讓它在27017/27018/27019上偵聽。還是我誤會了? – user3271166
對不起,沒有用localhost:27017解析命令行。可能會嘗試綁定到0.0.0.0:27017 –