You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为docker-compose构建阶段指定--network=host构建选项?

如何在Docker Compose中指定构建阶段使用Host网络

嘿,这个问题我之前也碰到过!单独用docker build --network=host能搞定,但要整合到Compose里的话,只需要在服务的构建配置里加一行参数就行,具体操作如下:

1. 修改主目录的docker-compose.yml

打开你根目录下的docker-compose.yml,把原来的build: ./recognizer改成带网络配置的结构:

version: '3'
services:
  recognizer:
    container_name: recognizer
    build:
      context: ./recognizer  # 构建上下文还是指向recognizer目录
      network: host          # 关键配置!指定构建阶段使用host网络
    hostname: recognizer
    restart: always
    ports:
      - 8084:8084
    network_mode: "host"

2. (可选)修改子目录的docker-compose.yml

如果你有时候需要单独操作recognizer服务,也可以更新recognizer文件夹里的docker-compose.yml,同样加上构建网络配置:

services:
  recognizer:
    build:
      context: .
      network: host
    ports:
      - "8084:8084"
    network_mode: "host"

补充说明

要注意区分两个配置的作用:这里的network: host镜像构建阶段的设置,和你已经添加的network_mode: host完全不同——前者让构建过程(比如Dockerfile里的nc测试、apt-get更新操作)使用宿主机网络,后者是控制容器运行时的网络模式。

改完之后,执行docker-compose build或者docker-compose up --build,构建recognizer镜像的时候就会自动使用host网络,这样你Dockerfile里的nc -w 2 -v localhost 5432命令就能正常访问宿主机的5432端口了。

内容的提问来源于stack exchange,提问作者Denis

火山引擎 最新活动