Можно ли подключить docker контейнер изнутри? - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужно подключиться к серверу базы данных Firebird, который работает внутри контейнера docker, и скрипту с SQLAlchemy, который работает в том же контейнере. Можно ли подключиться к серверу БД из скрипта? Если это так, как это можно сделать? Доступ к серверу Firebird возможен с хост-компьютера.

Мой docker файл

FROM jacobalberty/firebird

RUN apt-get -yqq update && apt-get -yqq upgrade
RUN apt-get install -y --no-install-recommends python3-pip
RUN apt-get install python3-dev -y --no-install-recommends

RUN apt-get install -y --no-install-recommends python3-virtualenv


RUN apt-get -y install locales
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

RUN adduser electron_queue

WORKDIR /home/electron_queue

COPY requirements.txt requirements.txt
RUN /usr/bin/easy_install-3.4 virtualenv
RUN virtualenv --python=/usr/bin/python3.4 venv

RUN venv/bin/pip3 install -r requirements.txt
RUN venv/bin/pip3 install gunicorn

COPY app app
COPY main.py config.py boot.sh ./
COPY visit_db1.fdb /firebird/data/
RUN chmod +x boot.sh

ENV FLASK_APP main.py
ENV DATABASE_URL firebird+fdb://db_login:db_password@localhost:3050//firebird/data/db.fdb
ENV ISC_PASSWORD 'password'

#RUN chown -R electron_queue:electron_queue ./

#USER electron_queue

EXPOSE 5000

#EXPOSE 3050/tcp

ENTRYPOINT ["./boot.sh"]
# умолчание, для команды которая должна выполняться при запуске контейнера

#ENTRYPOINT ["/usr/local/firebird/docker-entrypoint.sh"]

Я пытался:

  • изменить localhost на 127.0. 0.1
  • изменить localhost на host. docker .internal
  • изменить localhost на host и передать --net = "host", пока я запускаю docker
  • create docker - net, передать его в - net параметр
  • создать docker - net, передать его в параметре - net и выполнить пункты 1, 2 и 3 My ошибка (одинаковая во всех вариантах)
sqlalchemy.exc.DatabaseError: (fdb.fbcore.DatabaseError) ('Error while connecting to database:\n- SQLCODE: -902\n- Unable to complete network request to host "localhost".\n- Failed to establish a connection.', -902, 335544721)

Также я попытался раскомментировать USER electron_queue, EXPOSE 3050/tcp и точку входа firebird.

...