运行 一个容器停止另一个容器
Running a container stops another container
我创建了两个具有公共数据库 (mongo db) 的基本 MEAN 堆栈应用程序。我还为这些应用程序构建了 docker。
问题:
当我使用
启动平均堆栈容器(example-app-1)时
docker-compose up -d --build
容器 运行 很顺利,我也可以点击容器并在本地查看我的页面。
当我尝试使用
启动另一个平均堆栈容器(example-app-2)时
docker-compose up -d --build
我之前的容器已停止,当前容器运行正常。
要求:
我希望这两个容器 运行 同时使用共享数据库。我需要帮助才能实现这一目标。
docker-compose.yml 示例应用程序 -1
version: '3'
services:
example_app_1:
build:
dockerfile: dockerfile
context: ../../
image: example_app_1:1.0.0
backend:
image: 'example_app_1:1.0.0'
working_dir: /app/example_app_1/backend/example-app-1-api
environment:
- DB_URL=mongodb://172.17.0.1:27017/example_app_1
- BACKEND_PORT=8888
- BACKEND_IP=0.0.0.0
restart: always
ports:
- '8888:8888'
command: ['node', 'main.js']
networks:
- default
expose:
- 8888
frontend:
image: 'example_app_1:1.0.0'
working_dir: /app/example_app_1/frontend/example_app_1
ports:
- '5200:5200'
command: ['http-server', '-p', '5200', '-o', '/app/example_app_1/frontend/example-app-1']
restart: always
depends_on:
- backend
networks:
default:
external:
name: backend_network
docker-compose.yml 示例应用 2
version: '3'
services:
example-app-2:
build:
dockerfile: dockerfile
context: ../../
image: example_app_2:1.0.0
backend:
image: 'example-app-2:1.0.0'
working_dir: /app/example_app_2/backend/example-app-2-api
environment:
- DB_URL=mongodb://172.17.0.1:27017/example_app_2
- BACKEND_PORT=3333
- BACKEND_IP=0.0.0.0
restart: always
networks:
- default
ports:
- '3333:3333'
command: ['node', 'main.js']
expose:
- 3333
frontend:
image: 'example-app-2:1.0.0'
working_dir: /app/example_app_2/frontend/example-app-2
ports:
- '4200:4200'
command: ['http-server', '-p', '4200', '-o', '/app/example_app_2/frontend/example-app-2
restart: always
depends_on:
- backend
networks:
default:
external:
name: backend_network
docker-compose 将创建名为 project_service
的容器。默认情况下,项目来自目录的最后一个组件。因此,当您启动第二个 docker-compose 时,它将停止具有这些名称的容器,并启动新的容器。
要么将这两个 docker-compose 文件移动到单独的目录,以便容器名称不同,或者 运行 docker-compose with --project-name
flag 包含单独的项目名称,以便容器可以以不同的名称启动。
我创建了两个具有公共数据库 (mongo db) 的基本 MEAN 堆栈应用程序。我还为这些应用程序构建了 docker。
问题:
当我使用
启动平均堆栈容器(example-app-1)时docker-compose up -d --build
容器 运行 很顺利,我也可以点击容器并在本地查看我的页面。
当我尝试使用
启动另一个平均堆栈容器(example-app-2)时docker-compose up -d --build
我之前的容器已停止,当前容器运行正常。
要求:
我希望这两个容器 运行 同时使用共享数据库。我需要帮助才能实现这一目标。
docker-compose.yml 示例应用程序 -1
version: '3'
services:
example_app_1:
build:
dockerfile: dockerfile
context: ../../
image: example_app_1:1.0.0
backend:
image: 'example_app_1:1.0.0'
working_dir: /app/example_app_1/backend/example-app-1-api
environment:
- DB_URL=mongodb://172.17.0.1:27017/example_app_1
- BACKEND_PORT=8888
- BACKEND_IP=0.0.0.0
restart: always
ports:
- '8888:8888'
command: ['node', 'main.js']
networks:
- default
expose:
- 8888
frontend:
image: 'example_app_1:1.0.0'
working_dir: /app/example_app_1/frontend/example_app_1
ports:
- '5200:5200'
command: ['http-server', '-p', '5200', '-o', '/app/example_app_1/frontend/example-app-1']
restart: always
depends_on:
- backend
networks:
default:
external:
name: backend_network
docker-compose.yml 示例应用 2
version: '3'
services:
example-app-2:
build:
dockerfile: dockerfile
context: ../../
image: example_app_2:1.0.0
backend:
image: 'example-app-2:1.0.0'
working_dir: /app/example_app_2/backend/example-app-2-api
environment:
- DB_URL=mongodb://172.17.0.1:27017/example_app_2
- BACKEND_PORT=3333
- BACKEND_IP=0.0.0.0
restart: always
networks:
- default
ports:
- '3333:3333'
command: ['node', 'main.js']
expose:
- 3333
frontend:
image: 'example-app-2:1.0.0'
working_dir: /app/example_app_2/frontend/example-app-2
ports:
- '4200:4200'
command: ['http-server', '-p', '4200', '-o', '/app/example_app_2/frontend/example-app-2
restart: always
depends_on:
- backend
networks:
default:
external:
name: backend_network
docker-compose 将创建名为 project_service
的容器。默认情况下,项目来自目录的最后一个组件。因此,当您启动第二个 docker-compose 时,它将停止具有这些名称的容器,并启动新的容器。
要么将这两个 docker-compose 文件移动到单独的目录,以便容器名称不同,或者 运行 docker-compose with --project-name
flag 包含单独的项目名称,以便容器可以以不同的名称启动。