2017-05-14 126 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'行。但這是麻煩的所在。 –