【问题标题】:syntax error near unexpected token "(" while executing shell script for mongo db执行 mongo db 的 shell 脚本时出现意外标记“(”附近的语法错误
【发布时间】:2017-05-22 18:46:39
【问题描述】:

我正在尝试创建一个Dockerfile 来管理 mongo db 及其默认内容。

这里是 docker 文件和相关的 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

default-insert.js -

var db = db.getSiblingDB('demo')

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

当我构建 docker 映像时,我在 default-insert.js 的第一行收到以下错误

syntax error near unexpected token "("

不确定这里到底出了什么问题..需要一些专家建议!

【问题讨论】:

    标签: mongodb shell docker dockerfile


    【解决方案1】:

    太空——最后的边界。至少这看起来很可疑:

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

    它使FILES 为空并尝试将 js 文件作为 shell 脚本运行,从而导致错误消息(这是一个 shell 一次性变量分配命令,如 EDITOR=vi crontab -e)。改用这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 2018-07-28
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多