【问题标题】:running commands in docker-compose在 docker-compose 中运行命令
【发布时间】:2016-06-20 19:02:00
【问题描述】:

我正在尝试在具有 Ubuntu 15.10 的 VPS 机器上运行两个 docker 容器,并为此使用 docker-compose。一个容器是 mongodb 服务器,另一个运行我用 node.js/sails.js 编写的 Web 应用程序。

我在docker-compose.yml 中编写了以下内容,以便docker-compose up 将运行这两个容器。我正在将 Web 应用程序挂载到 Web 应用程序 docker 容器中的目录 /host 并希望进行端口映射 3050:1337(主机:docker)。为了运行 Web 应用程序,我使用了command 标签并使用 bash 更改目录并执行 sails lift 命令,但是它不起作用。我想我的以下脚本是错误的:

MongoDB:
  image: mongo

MyAPI:
  image: sailsjs-microservice:dev
  volumes:
   - /root/Code/node/My-API:/host
  command: bash -c "cd /host && sails lift"
  ports:
   - "3050:1337"

感谢您的帮助

【问题讨论】:

  • 嗯,我猜你忘了在你的 API 部分添加一个指向你的数据库的链接。 API 服务应该能够连接到那个 mongo 实例吧?

标签: node.js mongodb docker sails.js docker-compose


【解决方案1】:

我没有看到您的sailsjs-microservice 容器中的日志,但我认为您应该在您的API 容器中添加一个指向您的mongo 容器的链接。

一种方法是将其添加到您的撰写文件中:

MyApi:
   links:
    - mongo:mongo

第一个 mongo 是你要链接的图像的名称,第二个是别名,例如可以是 db。 Docker 会将容器的 IP 地址导出为环境变量,并为此添加一个 /etc/hosts 条目,以便您可以通过连接到 mongo:27017(其中 mongo 是compose 文件中定义的别名,27017 是默认端口)。

看看link environment variables

【讨论】:

    【解决方案2】:
    MongoDB:
      image: mongo
      networks:
          - myApi-tier
    
    MyAPI:
      image: sailsjs-microservice:dev
      volumes:
       - /root/Code/node/My-API:/host
      command: bash -c "cd /host && sails lift"
      networks:
          - myApi-tier
    
    networks:
      myApi-tier:
    

    您可以尝试使用网络,现在在您的服务中解析 mongodb 您可以使用标准端口,如 uri MongoDB。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多