2017-05-14 127 views
1

我正在Docker机器服务器上运行docker实例。我想从不同文件夹中的同一个docker-compose文件运行多个服务器(实例)。Docker撰写新镜像和实例

我配置了两个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 

现在我跑那些搬运工,撰写这样的:

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文件运行多个实例?

+0

您可以添加一些信息,如您正在运行的确切命令以及它们正在运行的文件夹/结构吗? – johnharris85

回答

1

原样:你不能因为你的主机上只有一个3306端口。但是,如果您让码头管理员链接管理链接,则可以使用docker-compose scale SERVICE=N其中SERVICE是您的服务名称,N是副本数量。例如白衣这个comnfiguration:

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因为它没有明确地通过一个端口连接到客户端扩展服务器服务。

+0

你是对的,但是你忘了提到从'docker-compose'文件中删除'container-name'行。但这是麻烦的所在。 –