【发布时间】:2018-04-04 09:52:38
【问题描述】:
我正在尝试在 minikube 上运行应用程序。为了让mongo起来,我正在跑步
kubectl create configmap mongo-initdb --from-file=importdata.sh
kubectl apply -f mongo.yaml
importdata.sh 为:
mongo myapp-dev --eval "db.dropDatabase()"
apt-get update && apt-get install curl && apt-get install bzip2
curl https://cdn.filestackcontent.com/xxxxxxxx -o myapp-db.tar.bz2
bzip2 -dc myapp-db.tar.bz2 | tar xvf -
mongorestore --db myapp-dev myapp-dev
mongo myapp-dev --eval 'db.users.update({}, {$set: {hashedPassword: "fwaPwkoIpS4y4aWA+uljXWIlyjTxUzkU+IgK4+B8m+ZhyBrWwM/N/oGfUj0ERAcwnXCOImkOvbvDMH/BAmN8FA==", salt: "YfnL4jUxfbYY6Y3/w8P8KA=="}}, {multi: true})'
mongo myapp-dev --eval 'db.getCollection("users").dropIndex("bad_index1")'
和 mongo.yaml 为:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mongo
spec:
template:
metadata:
labels:
app: mongo
spec:
containers:
- image: mongo:3.2
name: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-initdb
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: mongo-initdb
configMap:
name: mongo-initdb
我的目标是让 mongo 使用来自该网址的正确数据运行,我是 curling。但是,当我使用 kubectl logs -f deploy/mongo 检查日志时,我看到以下内容:
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/importdata.sh
MongoDB shell version: 3.2.17
connecting to: myapp-dev
2017-10-20T20:00:49.572+0000 I NETWORK [initandlisten] connection accepted from 127.0.0.1:47118 #2 (1 connection now open)
{ "ok" : 1 }
2017-10-20T20:00:49.576+0000 I NETWORK [conn2] end connection 127.0.0.1:47118 (0 connections now open)
E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
/docker-entrypoint-initdb.d/importdata.sh: line 5: curl: command not found
如果我在apt-gets 之前添加sudo,我只会得到sudo: command not found 错误。
我怎样才能用我的数据库正确启动 mongo?除了使用curl,我对其他解决方案持开放态度。
注意:
如果我运行 kubectl exec -it mongo-xxxxx bash 然后在 pod 中输入这些命令,这些命令就会起作用!有人可以解释在入口点运行脚本和在 pod 内运行命令之间的区别吗?
【问题讨论】:
标签: mongodb docker kubernetes kubectl minikube