С тех пор как я перешел на Docker Postgres, мои тесты с помощью pytest не пройдены. Теперь я идентифицировал как проблему мое соединение с базой данных.
Как это работает:
Когда я использую PostgreSQL 10 на моем Mac, он работает гладко. В качестве учетных данных базы данных в моем settings.py я использую:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'project',
'USER': 'MyName',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Как это не работает: поскольку я перешел на Docker + Postgres, мне нужно использовать разные учетные данные для подключения к моему Docker Postgres:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
Поскольку я хочу использовать Docker, а не PostgreSQL, но все же хочу иметь возможность проводить тестирование, мне интересно, есть ли у вас какое-либо решение для моей проблемы?
Вот мой вывод журнала консоли: https://pastebin.com/MZsccuGJ
Мой Dockerfile
# Pull base image
FROM python:3
# Set environment varibles
ENV PYTHONUNBUFFERED 1
# Set work directory
RUN mkdir /code
WORKDIR /code
# Install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /code/Pipfile
RUN pipenv install --deploy --system --skip-lock --dev
# Define ENTRYPOINT
COPY ./docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
# Copy project
COPY . /code/
Докер-Compose
version: '3'
services:
db:
image: postgres
ports:
- "5432:5432"
web:
build: .
env_file: .env
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
container_name: project