Как получить доступ к внешнему порту в docker-compose - PullRequest
0 голосов
/ 06 ноября 2019

Я хотел бы использовать свой конфигурационный файл docker-compose для целей разработки и запустить frontend, backend, nginx для служб маршрутизации, которые будут запускаться и запускаться вместе. На данный момент я использую также переадресацию портов kubernetes, чтобы добраться до моего neo4j db. Чего я хочу добиться, так это использовать сопоставленный порт внутри Docker-контейнеров, т.е. внешний порт также должен быть виден внутри докера. Он работает без докера, но не может внутри контейнеров. Мой файл docker-compose выглядит следующим образом, ничего необычного:

version: '3'

networks:
  lan:

services:
  nginx:
    restart: always
    build:
      dockerfile: Dockerfile.dev
      context: ./nginx
    ports:
      - 3050:80
    depends_on:
      - client
      - api

  client:
    build:
      context: ./client
      dockerfile: Dockerfile.dev
    volumes:
      - /app/node_modules
      - ./client:/app

  api:
    build:
      context: ./
      dockerfile: Dockerfile.dev
    volumes:
      - /app/node_modules
      - ./:/app
    environment:
      - REACT_APP_NEO4J_HOST=neo4j://neo4j:password@localhost:7687
      - REACT_APP_NEO4J_LOGIN=neo4j
      - REACT_APP_NEO4J_PASS=password

К сожалению, я получаю ошибку, так как он не пересылается внутри моего контейнера docker api. Для переадресации порта, который я использую (после аутентификации): kubectl port-forward svc/neo4j-ee-neo4j 7687:7687, но, конечно, он доступен только на моем хосте.

1 Ответ

1 голос
/ 06 ноября 2019

добавьте network_mode: "host" к свойствам службы, чтобы она использовала интерфейс хоста. https://docs.docker.com/compose/compose-file/#network_mode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...