首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在坞站中具有独立的网络

在坞站中具有独立的网络
EN

Stack Overflow用户
提问于 2021-11-02 14:39:17
回答 2查看 38关注 0票数 0

我有一个问题,如何在docker中分离网络?

我们必须在本地启动两次相同的应用程序,但问题是,如果我尝试在同一时间启动它们,我会得到一个错误,因为它们在同一个端口上启动,所以我在想,是否可以将网络分开,以便它们可以同时启动,而不需要我手动更改端口?

最终目标是从不同的分支运行相同的应用程序,并同时为每个分支运行Cypress测试(也来自Docker)。

EN

回答 2

Stack Overflow用户

发布于 2021-11-02 15:27:11

如果你在不同的服务中启动你的应用程序,你不需要创建单独的网络,因为docker在不同的容器中使用不同的网络启动它们。您只需要更改端口,您可以访问容器,但应用程序端口保持不变。

代码语言:javascript
运行
复制
version: "3.9"

services:
  app1:
    build: ./app
    ports:
    - 8080:8080
  app2:
    build: ./app
    ports:
    - 8081:8080

在本例中,'app1‘在容器中的端口8080上运行,映射的端口也是8080。'app2‘在端口8080上运行,但映射的端口是8081,因此您可以在8081上访问它。

票数 0
EN

Stack Overflow用户

发布于 2021-11-04 08:13:52

@MátéTősér感谢您的回复。

代码语言:javascript
运行
复制
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“,但是它不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69812228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档