Docker撰写新的图像和实例

时间:2017-05-14 19:07:02

标签: node.js docker docker-compose dockerfile

我正在运行docker机器服务器,我在其中运行docker实例。我想从不同文件夹中的相同docker-compose文件运行多个服务器(实例)。

我已经配置了两个Dockerfile。一个是mysql,另一个是nodejs。 这是一个例子:

FROM node:alpine
RUN npm install -g nodemon
RUN npm install -g pm2
ADD package.json package.json
RUN npm install 
EXPOSE 3000

现在我从docker-compose中运行这些:

version: '2'
services:
    service:
        build:
            context: .
            dockerfile: Dockerfile-server
        container_name: server
        ports:
        - "2000:3000"
        restart: always
        working_dir: /home/app
        volumes:
        - ./:/home/app
        command: sh -c 'nodemon'
    db:
        build:
            context: .
            dockerfile: Dockerfile-mysql
        container_name: mysql
        restart: always
        volumes:
        - ../mysql:/var/lib/mysql
        ports:
        - "3306:3306"

当我添加新的环境文件夹(包含这些文件和一些更新的nodejs文件夹的文件夹)并尝试运行docker-compose时。已经停止运行具有相同设置的码头工人并重新创建。

如何从同一个docker-compose文件中运行多个实例?

1 个答案:

答案 0 :(得分:1)

原样:您不能,因为您的主机上只有一个3306端口。但是,如果您让docker撰写管理链接,您可以使用docker-compose scale SERVICE=N,其中SERVICE是您的服务名称,N是副本数量。例如,使用此配置:

version: '2.1'

services:
  client:
    image: explorer-client
    ports:
      - 80:80
      - 443:443
    depends_on:
      - server
    networks:
      - client-server
      - client-watcher
  server:
    image: explorer-server
    depends_on:
      - redis
    networks:
      - client-server
      - server

networks:
  client-server:
    driver: bridge
  server:
    driver: bridge

您可以通过执行docker-compose scale server=2来扩展服务器服务,因为它没有通过端口明确地链接到客户端。