在docker-compose中运行命令

我正试图在Ubuntu 15.10的VPS机器上运行两个docker容器,并使用docker-compose这件事。 一个容器是一个mongodb服务器,另一个容器运行我的web应用程序,用node.js / sails.js写成。

我在docker-compose.yml编写了以下docker-compose.yml以便docker-compose.yml docker-compose up将运行这两个容器。 我将Web应用程序挂载到Web应用程序泊坞窗容器中的目录/host ,并且想要执行端口映射3050:1337 (host: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" 

我感谢您的帮助

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

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

 MyApi: links: - mongo:mongo 

第一个mongo是你想要链接的图像的名字,第二个是别名,可以是db。 Docker会将容器的IP地址导出为一个环境variables,并且为此添加一个/etc/hosts条目,以便通过连接到mongo:27017(其中mongo是组合中定义的别名)在服务代码中引用它文件和27017是默认端口)。

看看链接环境variables

 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: 

你可以尝试使用networking,现在在你的服务里面parsingmongodb你可以使用标准端口和uri MongoDB一样。