docker-compose启动两个节点应用程序

时间:2017-05-05 17:58:32

标签: node.js docker docker-compose

我的结构如下:

├── api
│   ├── server.js
│   ├── Dockerfile
├── docker-compose.yml
└── web
    ├── client
    ├── Dockerfile
    ├── node_modules
    ├── package.json
    └── server

2个Dockerfiles和一个docker在root文件中编写文件,如何使用docker compose运行这两个应用程序?

我试过这样:

撰写文件:

services:
  web:
    build: ./web .
    volumes:
        - .:/app
    ports:
        - "4200:4200"
    restart: always
    command: npm start
   server:
    build ./api .
    volumes:
        - .:/app
    ports:
        - "3100:3100"
    restart: always
    environment:
        - NODE_ENV=production
    command: npm start

Api docker文件示例:

FROM node:6.9.4

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN npm install nodemon -g

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 3100

但是这个部分会出错:build: ./web .

对此有何解决方案?

1 个答案:

答案 0 :(得分:0)

你的构建线上有一个额外的点。句点通常是指示上下文的当前目录,但您只需将其更改为目录,而不是添加额外的部分。服务器行上也存在间距问题,yaml文件对空白敏感。最后,请确保包含版本行:

version: '2'
services:
  web:
    build: ./web
    volumes:
        - .:/app
    ports:
        - "4200:4200"
    restart: always
    command: npm start
  server:
    build ./api
    volumes:
        - .:/app
    ports:
        - "3100:3100"
    restart: always
    environment:
        - NODE_ENV=production
    command: npm start