我有一個問題,如何在 docker 中分離網路?
我們必須在本地啟動 2 次相同的應用程式,但問題是如果我嘗試在同一時間啟動它們,我會出錯,因為它們在同一個埠上啟動,所以我在想是否可以將網路分開,以便它們可以同時啟動,而不必手動更改埠嗎?
最終目標是從不同的分支運行相同的應用程式,并同時為每個分支運行 Cypress 測驗(也來自 Docker)。
uj5u.com熱心網友回復:
如果你在不同的服務中啟動你的應用程式,你不需要創建單獨的網路,因為 docker 在不同網路的不同容器中啟動它們。您只需要更改埠即可訪問容器,但應用程式埠保持不變。
version: "3.9"
services:
app1:
build: ./app
ports:
- 8080:8080
app2:
build: ./app
ports:
- 8081:8080
在這個例子中,'app1' 運行在容器的 8080 埠,映射的埠也是 8080。'app2' 運行在 8080 埠,但映射的埠是 8081,所以你在 8081 上訪問它。
uj5u.com熱心網友回復:
@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
這就是我的想法并讓它在其他埠上運行,但這是正確的方法嗎?或者最好在不同的網路上運行它們(如果可能的話)?因為我試圖重命名為另一個網路 - 但就像它們再次在同一個網路上一樣,并且還嘗試使用“內部:true”但它不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/347905.html
