Невозможно подключить базу данных Oracle 19 к контейнеру Django с базой данных Oracle, запущенной в другом контейнере

Я довольно новичок в Docker и пытаюсь запустить приложение Django с базой данных Oracle 19 с помощью Docker благодаря файлу docker-compose.dev.yml. Проблема в том, что мой контейнер базы данных работает, но не мое Django приложение, которое не может подключиться к базе данных. Вот файл :

version: "3.9"

services:
  oracle-database:
    image: icsvaccart/oracle19c:latest
    volumes:
      - ./data/db:/opt/oracle/oradata
    ports:
      - "1521:1521"
      - "5500:5500"

  django-back-end:
    build: .
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    env_file:
      - pythonPOC/.env
    depends_on:
      - oracle-database

Затем я выполнил команду docker compose -f docker-compose.dev.yml up --build и через пару минут процесс завершился со следующими полными логами :

Мой контейнер django-back-end завершился со следующим сообщением об ошибке :

oracledb.exceptions.OperationalError: DPY-6005: невозможно подключиться к базе данных. Соединение не удалось с ошибкой "[Errno 99] Cannot assign requested address"

.

Я заметил в своем Docker Desktop, что мой контейнер oracle-database все еще запущен. Я успешно попытался получить доступ к моей базе данных Oracle из SQL Developer как SYS или с новым пользователем, которого я создал. Я выполнил SELECT SYSDATE FROM dual и он возвращает текущую дату.

Если я пытаюсь запустить мой django-back-end с помощью python manage.py runserver, все работает, и я могу получить доступ к моей базе данных Oracle, которая запущена в контейнере, запущенном ранее с помощью docker-compose. Обратите внимание, что я ничего не менял в своем файле .env.

(venv) PS D:\Vianney\Documents\Projets\pythonPOC> python manage.py runserver
Do we have a good connection : True
Are we using a Thin connection : True
Database version : 19.3.0.0.0
Do we have a good connection : True
Are we using a Thin connection : True
Database version : 19.3.0.0.0
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
October 28, 2022 - 17:12:40
Django version 4.1.2, using settings 'pythonPOC.settings'
Starting development server at http://127.0.0.1:8000/    
Quit the server with CTRL-BREAK.    

Dockerfile (корневой уровень) :

FROM python:3

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /app

COPY requirements.txt /app
RUN pip install -r requirements.txt

COPY . .

CMD python manage.py runserver

requirements.txt :

asgiref==3.5.2
cffi==1.15.1
cryptography==38.0.1
distlib==0.3.6
Django==4.1.2
django-environ==0.9.0
filelock==3.8.0
oracledb==1.1.1
platformdirs==2.5.2
pycparser==2.21
sqlparse==0.4.3
tzdata==2022.5
virtualenv==20.16.6

settings.py :

import environ
import oracledb

sys.modules["cx_Oracle"] = oracledb

# Initialise environment variables
env = environ.Env()
environ.Env.read_env()

con = oracledb.connect(user=env('DATABASE_USER'), password=env('DATABASE_PASSWORD'), dsn=env("DATABASE_DSN"),
                       port=env('DATABASE_PORT'))

print('Do we have a good connection :', con.is_healthy())
print('Are we using a Thin connection :', con.thin)
print('Database version :', con.version)

Мой файл .env, который находится на том же уровне, что и settings.py :

SECRET_KEY=<my_secret_key>
DEBUG=True

DATABASE_ENGINE=django.db.backends.oracle
DATABASE_NAME=ORCLCDB
DATABASE_USER=c##vaccart
DATABASE_PASSWORD=<my_password>
DATABASE_HOST=localhost
DATABASE_PORT=1521
DATABASE_DSN=localhost/ORCLCDB

Я застрял на два дня, поэтому любая помощь будет оценена по достоинству. Спросите меня, если вам нужно больше информации !

Я также попытался создать образ моего django-back-end и запустить его в надежде, что он подключится к базе данных Oracle. Получил то же сообщение об ошибке...

Вернуться на верх