Docker 组合新映像和实例



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

原样:您不能,因为您的主机上只有一个 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来缩放服务器服务,因为它没有通过端口显式链接到客户端。

最新更新