node.js - docker-compose 启动两个 Node 应用程序

标签 node.js docker docker-compose

我的结构是这样的:

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

根目录下有 2 个 Dockerfile 和 1 个 docker compose 文件,如何使用 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 .

有什么解决办法吗?

最佳答案

您的构建线上有一个额外的点。句点通常是当前目录来指示上下文,但您只需将其更改为目录,而不是添加额外的部分。您的服务器行上还存在空格问题,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

关于node.js - docker-compose 启动两个 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811169/

相关文章:

amazon-web-services - 在AWS Multicontainer Docker环境中部署到特定容器

docker - 如何在 Grafana Docker 容器中拥有 root 权限?

docker - 如何在 gitlab-runner 容器内运行的 docker 中的 docker 中运行 docker-compose?

docker - 使用localhost的Docker端口转发

node.js - Sequelize 关联的某些设置不起作用

docker - 如何让我的docker daemon日志打印到日志文件而不是STDOUT?

python - 绕过软件向导并使用默认参数安装

node.js - Node 未找到全局模块

node.js - 一直崩溃没有日志

javascript - 构造函数第二次失败,但不是第一次