Мне нужно подключиться к серверу базы данных 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.