在docker-compose中运行命令

时间:2016-06-20 19:02:00

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

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

我在docker-compose.yml中写了以下内容,以便docker-compose up将运行两个容器。我将Web应用程序挂载到Web应用程序泊坞窗容器中的目录/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"

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

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

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

MyApi:
   links:
    - mongo:mongo

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

查看link environment variables

答案 1 :(得分:1)

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。