Как настроить macvlan для docker -compose artifactory - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь разрешить прямой доступ браузера (например, порт 80) к экземпляру Artifactory, настроенному с помощью docker compose. Моя цель - выставить порт 8082 Artifactory как порт 80 на IP, созданном через macvlan, в то время как внутренняя связь между Artifactory и PostgreSQL остается в частной сети контейнера.

Я вручную создал сеть MACVLAN на docker хост с именем macvlan26. Затем я добавил сетевые разделы к службам в docker compose, а также в root section:

version: '3'
services:
  postgres:
    image: ${DOCKER_REGISTRY}/postgres:10.13-alpine
    container_name: postgresql
    environment:
     - POSTGRES_DB=artifactory
     - POSTGRES_USER=artifactory
     - POSTGRES_PASSWORD=__REPLACE_POSTGRES_PASSWORD__
    ports:
      - 5432:5432
    volumes:
     - ${ROOT_DATA_DIR}/var/data/postgres/data:/var/lib/postgresql/data
     - /etc/localtime:/etc/localtime:ro
    restart: always
    logging:
      driver: json-file
      options:
        max-size: "50m"
        max-file: "10"
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    networks:
      default:
  

  artifactory:
    image: ${DOCKER_REGISTRY}/jfrog/artifactory-cpp-ce:${ARTIFACTORY_VERSION}
    container_name: artifactory
    volumes:
     - ${ROOT_DATA_DIR}/var:/var/opt/jfrog/artifactory
     - /etc/localtime:/etc/localtime:ro
    restart: always
    depends_on:
    - postgres
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    environment:
     - JF_ROUTER_ENTRYPOINTS_EXTERNALPORT=${JF_ROUTER_ENTRYPOINTS_EXTERNALPORT}
    ports:
      - ${JF_ROUTER_ENTRYPOINTS_EXTERNALPORT}:${JF_ROUTER_ENTRYPOINTS_EXTERNALPORT} # for router communication
      - 8081:8081 # for artifactory communication
    logging:
      driver: json-file
      options:
        max-size: "50m"
        max-file: "10"
    networks:
        container_net:
          ipv4_address: 192.168.0.220
        default:

networks:
  default:
  container_net:
    external:
      name: macvlan26

По-видимому, существует проблема с контейнером Artifactory для связи с posgres через порт 5432.

artifactory    | Resolved shared.database.url (jdbc:postgresql://192.168.10.10:5432/artifactory) from /opt/jfrog/artifactory/var/etc/system.yaml
artifactory    | Waiting for DB postgresql to be ready on 192.168.10.10/5432 for 30 seconds

, а 192.168.10.10 - это адрес docker хоста.

Как я могу настроить shared.database.url таким образом, чтобы Artifactory попыталась связаться с postgres через внутреннюю контейнерную сеть, а не через порт, открытый на хосте?

...