Я пытаюсь разрешить прямой доступ браузера (например, порт 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 через внутреннюю контейнерную сеть, а не через порт, открытый на хосте?