BaseX Server/Client в отдельных док-контейнерах

Мне интересно использовать BaseX в проекте, который использует Docker (в данном случае docker-compose). Обычная настройка для веб-приложения использует один контейнер для базы данных, а другой - для веб-сервера. Это означает, что веб-сервер должен подключаться к BaseX по сети. Однако, если я попытаюсь подключиться к контейнеру базы данных по сети, используя basexclient Я всегда получаю сообщение об ошибке " Отказано в доступе". С другой стороны REST API похоже на работу.

Это мой пример:

докер-compose.yaml:

version: '3'

services:

  xmldb:
    image: basex/basexhttp:latest
    container_name: xmldb
    volumes:
      - ./res:/eoa/res
      - ./runtime_data/basex_data:/srv/basex/data
    ports:
      - 1984:1984
      - 8984:8984
    # user: 1000:100
    # command:
      # - "/usr/local/bin/basexserver"


  # eoa-django
  webserver:
    depends_on:
      - db
      - xmldb
    build: .
    image: eoa2_webserver
    container_name: eoa2_webserver
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - ./src:/eoa/server
      - ./res:/eoa/res
    working_dir: /eoa/server
    environment:
      - INSTALL_DIR=/eoa/server
      - RES_DIR=/eoa/res
    ports:
      - "8000:8000"
    # user: 1000:100

Dockerfile:

FROM python:3

ENV PYTHONUNBUFFERED 1
ENV SHELL /bin/bash

# ------------------------------------------
# install necessary packages via apt-get:
# ------------------------------------------
RUN apt-get update && \
  apt-get install -y --no-install-recommends \
        basex
#   ...

# ------------------------------------------
# install python dependencies:
# ------------------------------------------
COPY requirements.txt "$INSTALL_DIR/"
RUN pip install -r requirements.txt

Нет, я выполняю эти команды:

$ docker-compose exec webserver basexclient -n xmldb
$ > Username: admin
$ > Password: **** (admin)
$ > Access denied.

Однако, если я использую REST API, кажется, все работает:

$ docker-compose exec webserver bash
$ > wget --user admin --password admin xmldb:8984/res
$ > cat rest
$ > <rest:databases xmlns:rest="http://basex.org/rest" resources="0"/>

Является ли REST API единственным способом подключения к BaseX в этом сценарии? Аналогично базам данных SQL, а именно postgres, я бы ожидал basexclient Команда работать по сети. Я ошибся?

Любые подсказки приветствуются!

0 ответов

Другие вопросы по тегам