单独的Docker容器中的BaseX Server / Client

时间:2019-01-30 13:35:11

标签: docker docker-compose basex docker-network

我想在使用Docker的项目中使用BaseX(在本例中为docker-compose)。 Web应用程序的常见设置使用一个容器存储数据库,使用另一个容器存储网络服务器。这意味着Web服务器必须通过网络连接到BaseX。 但是,如果我尝试使用basexclient命令通过网络连接到数据库容器,则会始终出现拒绝访问错误。 另一方面,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命令可以在网络上工作。我错了吗?

欢迎任何提示!

0 个答案:

没有答案