【问题标题】:Docker compose new image and instanceDocker 组合新镜像和实例
【发布时间】:2017-05-14 19:07:02
【问题描述】:

我正在运行 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 并重新创建它。

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

【问题讨论】:

  • 您能否添加一些信息,例如您正在运行的确切命令以及正在运行它们的文件夹/结构?

标签: node.js docker docker-compose dockerfile


【解决方案1】:

按原样:您不能,因为您的主机上只有一个 3306 端口。但是,如果您让 docker compose 管理链接,您可以使用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 扩展服务器服务,因为它没有通过端口明确链接到客户端。

【讨论】:

  • 你是对的,但你忘了从docker-compose 文件中删除container-name 行。但这是麻烦的根源。
猜你喜欢
  • 1970-01-01
  • 2015-03-14
  • 2020-01-21
  • 2017-03-29
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多