【问题标题】:Docker-compose setup mongodb with data and a nodejs serverDocker-compose 使用数据和 nodejs 服务器设置 mongodb
【发布时间】:2016-04-17 20:45:14
【问题描述】:

我想用 docker compose 启动整个 nodejs/mongodb 环境。我在 radcupDevSample.json 中创建了一个 mongodump,我想用 mongo 恢复一个新的 mongodb 容器。在此之后,我想要一个新的节点容器,我的 api 链接到带有示例数据的 mondodb 容器。

我有以下文件:

1. docker-compose.yml:

db:
  image: mongo
  ports: 
    - "27017:27017"`

mongo-importer:
      build: .

web: 
     build: web
     links:
            - db 
     ports:
            - "3000:3000"
      volumes: 
             - ./src:/home/env
      environment:
            NODE_ENV: development

2。网络 Dockerfile:

FROM node
RUN apt-get update -y
RUN apt-get install -y git
RUN apt-get install -y vim
RUN git clone https://sdsds-oauth-basic@github.com/jdklfj /home/app
WORKDIR /home/app/src
RUN npm install
CMD "npm start"
EXPOSE 3000

3. “。” dockerfile

FROM mongo
COPY radcupDevSample.json /radcupDevSample.json
CMD mongorestore -h db /radcupDevSample.json

我使用了这里提到的这个答案: How do I seed a mongo database using docker-compose?

我的问题是:如果我尝试docker-compose up 我得到这个错误:

docker-compose up
radcupbackend_db_1 is up-to-date
Building web
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/compose/compose/cli/main.py", line 54, in main
  File "/compose/compose/cli/docopt_command.py", line 23, in sys_dispatch
  File "/compose/compose/cli/docopt_command.py", line 26, in dispatch
  File "/compose/compose/cli/main.py", line 171, in perform_command
  File "/compose/compose/cli/main.py", line 587, in up
  File "/compose/compose/project.py", line 313, in up
  File "/compose/compose/service.py", line 404, in execute_convergence_plan
  File "/compose/compose/service.py", line 303, in create_container
  File "/compose/compose/service.py", line 326, in ensure_image_exists
  File "/compose/compose/service.py", line 723, in build
  File "/compose/venv/lib/python2.7/site-packages/docker/api/build.py", line 41, in build
TypeError: You must specify a directory to build in path
docker-compose returned -1

有人“提示”我为什么会收到此错误?或者也许有人可以帮我建立这个环境?

谢谢!

附言。分别构建 2 个 Dockerfile 不会引发任何错误...

【问题讨论】:

    标签: node.js mongodb docker


    【解决方案1】:

    看起来 docker 无法从您正在运行的当前目录中找到 web/ 目录 docker-compose up

    你的结构是这样的吗?

    anovil@ubuntu-anovil:~/tmp/docker-compose-mongo$ tree .
    .
    ├── docker-compose.yml
    ├── Dockerfile
    ├── radcupDevSample.json
    ├── src
    └── web
        └── Dockerfile
    
    2 directories, 4 files
    anovil@ubuntu-anovil:~/tmp/docker-compose-mongo$
    

    我创建了这种结构,然后在运行构建时,

    anovil@ubuntu-anovil:~/docker-compose-mongo$ docker-compose up
    dockercomposemongo_db_1 is up-to-date
    Starting dockercomposemongo_web_1
    Building mongo-importer
    Step 1 : FROM mongo
     ---> 94a166215fe3
    ...
    

    为了确保一切正常,我建议您首先从同一目录运行docker-compose build --no-cache,这将确保您从头开始。

    anovil@ubuntu-anovil:~/docker-compose-mongo$ docker-compose build --no-cache
    db uses an image, skipping
    Building web
    Step 1 : FROM node
     ---> ac9b478bfbbd
    ...
    

    然后运行docker-compose up

    请告诉我进展如何。

    【讨论】:

    • 非常感谢,问题是我还没有理解导演的 docker 文件样式。将 dockerfile 命名为 web 将不起作用。在我创建了一个 web/目录和一个新的 Dockerfile 之后,一切都按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2017-12-29
    • 1970-01-01
    • 2015-06-23
    • 2022-12-09
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多