1

我有一个主要的 docker-compose.yml:

version: '3'
services:
  recognizer:  
    container_name: recognizer
    build: ./recognizer
    hostname: recognizer
    restart: always   
    ports:
      - 8084:8084
    network_mode: "host" 

我有一个带有Dockerfiledocker-compose.yml的文件夹识别器:

Dockerfile:

FROM openjdk:8

RUN mkdir -p /app/

COPY . /app

WORKDIR /app

RUN chmod 777 /app/gradlew

RUN apt-get update && apt-get install -y netcat-traditional

RUN nc -w 2 -v localhost 5432 </dev/null; status=$?; exit $status;

RUN ./gradlew build

CMD ["./gradlew", "run"]

EXPOSE 8084

码头工人-compose.yml

recognizer:
  build:
    context: .
  ports:
    - "8084:8084"

我的文件结构是:

.
├── docker-compose.yml
├── recognizer
│   ├── build
│   ├── build.gradle
│   ├── docker-compose.yml
│   ├── Dockerfile
│   ├── gradle
│   ├── gradlew
│   ├── gradlew.bat
│   ├── settings.gradle
│   └── src

所以,我需要localhostbuild阶段连接到。有用。如果我使用 option 构建 Docker 映像--network=host,如下所示:

docker build --network=host -t recognizer .

但我不知道如何为 docker-compose 指定构建选项。

4

1 回答 1

0

有一个选项可以在 docker-compose.yml 中设置网络,如下所示:

build:
  context: ./
  dockerfile: Dockerfile
  network: host

然后docker-compose build your-service将使用主机网络进行构建阶段。这为我解决了问题

于 2021-03-10T07:48:04.900 回答