Как указать параметры сборки для этапа сборки docker-compose?

У меня есть основной docker-compose.yml:

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

У меня есть папка recognizer с Dockerfile и docker-compose.yml:

Файл Docker:

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

docker-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

Итак, мне нужно подключиться к localhost на этапе build. Оно работает. если я создам образ Docker с параметром --network=host, например:

docker build --network=host -t recognizer .

Но я не знаю, как указать параметр сборки для docker-compose.


person Denis    schedule 21.01.2018    source источник
comment
Какой вариант сборки вас интересует? Пожалуйста, уточните немного.   -  person vivekyad4v    schedule 21.01.2018
comment
@vivekyad4v --network=host   -  person Denis    schedule 21.01.2018
comment
@ vivekyad4v В ссылке docker-compose bundle говорится, что будут экспортированы только изображения с опцией сборки. Вопрос стоит, что такое вариант сборки и как его указать.   -  person Dragas    schedule 04.12.2018


Ответы (1)


В docker-compose.yml есть возможность настроить сеть следующим образом:

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

Затем docker-compose build your-service будет использовать хост-сеть для этапа сборки. Это решило проблему для меня

person alex tolkachev    schedule 10.03.2021