BaseX Server / Client в отдельных док-контейнерах - PullRequest
0 голосов
/ 30 января 2019

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

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

docker-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 будет работать по сети.Я не прав?

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

...