我正在运行运行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
来缩放服务器服务,因为它没有通过端口显式链接到客户端。