我有一个问题,如何在docker中分离网络?
我们必须在本地启动两次相同的应用程序,但问题是,如果我尝试在同一时间启动它们,我会得到一个错误,因为它们在同一个端口上启动,所以我在想,是否可以将网络分开,以便它们可以同时启动,而不需要我手动更改端口?
最终目标是从不同的分支运行相同的应用程序,并同时为每个分支运行Cypress测试(也来自Docker)。
发布于 2021-11-02 15:27:11
如果你在不同的服务中启动你的应用程序,你不需要创建单独的网络,因为docker在不同的容器中使用不同的网络启动它们。您只需要更改端口,您可以访问容器,但应用程序端口保持不变。
version: "3.9"
services:
app1:
build: ./app
ports:
- 8080:8080
app2:
build: ./app
ports:
- 8081:8080
在本例中,'app1‘在容器中的端口8080上运行,映射的端口也是8080。'app2‘在端口8080上运行,但映射的端口是8081,因此您可以在8081上访问它。
发布于 2021-11-04 08:13:52
@MátéTősér感谢您的回复。
version: '3.7'
services:
postgres_changes:
image: postgres
restart: always
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=user
ports:
- '${db_port:-5433}:5432'
mem_limit: 50m
networks:
- network
api_changes:
image: node:14.16.0
restart: on-failure
depends_on:
- postgres_changes
ports:
- '${api_port:-8080}:8080'
working_dir: /opt
environment:
- WEB_URL=http://localhost:${web_port:-3000}
- API_URL=http://localhost:${api_port:-8080}
- PORT=${port:-8080}
- DB_HOST=host.docker.internal
volumes:
- clone:/opt
- ./packages/api/.env:/.env
- ./packages/api/config.json:/packages/api/config.json
command: sh -c "git checkout ${branch:-development}
&& cd ./packages/api
&& npx sequelize db:drop
&& npx sequelize db:create
&& yarn migrate
&& yarn seed
&& yarn ci:populate
&& yarn start:dev"
mem_limit: 500m
networks:
- network
web_changes:
image: node:14.16.0
restart: on-failure
depends_on:
- api_changes
ports:
- '${web_port:-3000}:3000'
working_dir: /opt
environment:
- REACT_APP_API_BASE_URL=http://localhost:8080
volumes:
- clone:/opt
- ./packages/web/.env:.env
- ./packages/web/src/config.json:/packages/web/src/config.json
stdin_open: true
command: sh -c "cd ./packages/web && yarn start"
mem_limit: 1g
networks:
- network
volumes:
clone:
name: ${volume_name:-clone}
networks:
network:
name: $network_name
# internal: true
这就是我所想的,并让它在其他端口上运行,但这是正确的方式吗?或者在不同的网络上运行它们(如果可能的话)更好?因为我试着重命名到另一个网络--但是它们又像是在同一个网络上,并且我也试着使用"internal: true“,但是它不起作用。
https://stackoverflow.com/questions/69812228
复制相似问题