我想让我的应用程序在minikube上运行,在minikube ip地址可以访问。以下是我用来运行它的命令。这一切都按我的意愿工作(如果我尝试登录,它会返回预期的401,因为mongo DB是空的)。如何在kubernetes中包含mongo映像的数据
我想实际上在我的应用程序中包含一个数据库,例如现有的用户。我无法找到一个清楚的方式来说明如何在我正在做的事情中包含数据(比如在一个与mongo一起使用的tar文件中)。我怎样才能做到这一点?
### Get mongo up
docker pull mongo:3.2
kubectl run mongo --image=mongo:3.2 --port=27017
kubectl expose deployment mongo
### Get API up
cd /api
docker build -t api:v1 .
kubectl run api --image=api:v1 --port=3000 --env="MONGODB_URI=mongodb://mongo:27017/myapp-dev"
kubectl apply -f api-deployment.yml
kubectl expose deployment api --type=LoadBalancer
### Get dashboard up
docker build -t myapp-dashboard:v1 .
kubectl apply -f ./tooling/minikube/myapp-dashboard-qa-config-map.yml
kubectl apply -f ./tooling/minikube/myapp-dashboard-deployment.yml
kubectl expose deployment myapp-dashboard --type=LoadBalancer
### Ingress setup
minikube addons enable ingress
kubectl create -f ingress.yml
kubectl apply -f ./tooling/minikube/ingress.yml
嗨,谢谢你的回答!我用它来处理你的例子,但我现在试图导入一个数据库,并面临一些问题。在'createuser.sh'脚本里面,我试图卷曲'myapp-db.tar.bz2',所以我可以'mongorestore'它,但是我的荚断了,日志说'curl:command not found'。我尝试添加'apt-get'脚本,但日志中显示'无法打开锁定文件/ var/lib/dpkg/lock - open(13:Permission denied)'。我怎样才能在这里正确运行脚本?我将在下面发布我的完整shell文件: – swagrov
'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 mapp-db.tar.bz2 | tar xvf - mongorestore --db myapp-dev myapp-dev mongo myapp-dev --eval'db.users。更新({},{$ set:{hashedPassword:“fwaPwkoIpS4y4aWA + uljXWIlyjTxUzkU + IgK4 + B8m + ZhyBrWwM/N/oGfUj0ERAcwnXCOImkOvbvDMH/BAmN8FA ==”,salt:“YfnL4jUxfbYY6Y3/w8P8KA ==”}},{multi:true}) ' mongo myapp-dev --eval'db.getCollection(“users”)。dropIndex(“referral_1”)' – swagrov
initdb脚本没有以root身份运行,这就是为什么你不能执行apt-get update /从那里安装'。在'name'下的'containers:'部分只需添加'command:[“sh”,“ - c”,“apt-get update && apt-get install ... && exec docker-entrypoint.sh”]' 。这应该尽快解决问题。更好的是,建立你自己的mongo图像,它有curl :-) –