我正在运行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文件中运行多个实例?
答案 0 :(得分:1)
原样:您不能,因为您的主机上只有一个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
来扩展服务器服务,因为它没有通过端口明确地链接到客户端。