Можно ли подключиться к docker контейнеру изнутри этого контейнера
Есть 2 процесса в одном docker контейнере, сервер бд Firebird и скрипт с SQLAlchemy. Возможно ли подключиться скриптом к серверу бд и, если возможно, то как? С хост машины подключение к серверу возможно, порты проброшены. 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 run
- создать docker-net, передать его в --net параметре
- создать docker-net, передать его в --net параметре и повторить пункты 1, 2 Мой текст ошибки (один и тот же)
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 и entry point firebird'а.
Ответы (1 шт):
Автор решения: volkoshkursk
→ Ссылка
Проблема была в том, что сервер Firebird не был запущен. Для его запуска необходимо выполнить команду из ENTRYPOINT образа jacobalberty/firebird