2017-05-22 69 views
2

我试图管理蒙戈DB和它的默认内容创建一个Dockerfile语法错误而执行shell脚本蒙戈DB

这里是码头工人的文件及相关的shell脚本 -

DockerFile -

# Dockerizing MongoDB: Dockerfile for building MongoDB images 
# Based on ubuntu:16.04, installs MongoDB following the instructions from: 
# http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ 

FROM  ubuntu:16.04 

# Installation: 
# Import MongoDB public GPG key AND create a MongoDB list file 
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 
RUN echo "deb http://repo.mongodb.org/apt/ubuntu $(cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2)/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list 

# Update apt-get sources AND install MongoDB 
RUN apt-get update && apt-get install -y mongodb-org 

# Create the MongoDB data directory 
RUN mkdir -p /data/db 

COPY ./scripts /data/scripts 

COPY ./run.sh /data/init/run.sh 

RUN chmod +x /data/init/run.sh 
RUN chmod +x /data/scripts/* 

RUN /data/init/run.sh 

# Expose port #27017 from the container to the host 
EXPOSE 27017 

# Set /usr/bin/mongod as the dockerized entry-point application 
ENTRYPOINT [ "/usr/bin/mongod", "--rest"] 

Run.sh -

# Start mongo db 
/usr/bin/mongod --fork --logpath /data/mongodb.log 

# Run all Create scripts 
# FILES= data/scripts/*-create.js 
# for f in $FILES; do /usr/bin/mongo 127.0.0.1:27017/demo $f; done 

cd data/scripts 

# Run all Insert scripts 
FILES= ./*-insert.js 
for f in $FILES; do /usr/bin/mongo 127.0.0.1:27017 $f; done 

#Stop mongo db 
/usr/bin/mongod --shutdown 

默认insert.js -

var db = db.getSiblingDB('demo') 

db.names.insert({'name' : 'Manoj Shevate', 'id':1}); 

当我建码头工人的形象,我得到的默认insert.js的第一线以下错误

syntax error near unexpected token "("

不知道这里究竟出了什么问题..需要一些专家的意见!

回答

2

空间 - 最后的边界。至少,这看起来腥:

# Run all Insert scripts 
FILES= ./*-insert.js 

它使FILES空,并尝试运行js文件作为shell脚本,导致该错误消息(它就像EDITOR=vi crontab -e一个壳状的镜头变量赋值命令)。改为:

for f in *-insert.js; do /usr/bin/mongo 127.0.0.1:27017 "$f"; done 
+0

谢谢.. !!它现在工作:) –