Развертывание приложения Django на Railway.app с помощью Postgres
Мне нужна помощь в развертывании моего приложения Django на railway.app. Я все еще разрабатываю приложение, но оно уже в хорошей форме, поэтому я решил попробовать развертывание. Оно отлично работает на моем локальном mac, я использовал Postgres в качестве db, запущенное в docker. Когда я пытаюсь развернуть его на railway.app, я добавил Dockerfile:
# Use an official Python runtime as a parent image
FROM python:3.10-slim
# Set environment variables to avoid interactive prompts during installation
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set the working directory
WORKDIR /app
# Install dependencies
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
# Copy the entire project into the container
COPY . /app/
# # Set the default Django app for commands
# ENV DJANGO_APP mywebsite
# Expose the port the app runs on
EXPOSE 8000
# Run the application
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Затем я настроил переменные окружения на панели инструментов для моего приложения django, чтобы соединиться с сервисом postgress:
- ${{Postgres.PGDATABASE}}
- ${{Postgres.PGUSER}}
- ${{Postgres.PGPASSWORD}}
- ${{Postgres.PGHOST}}
- ${{Postgres.PGPORT}} Все они должны быть связаны с помощью следующего фрагмента кода в файле settings.py:
os.environ.setdefault("PGDATABASE", "mydatabase")
os.environ.setdefault("PGUSER", "myuser")
os.environ.setdefault("PGPASSWORD", "mypassword")
os.environ.setdefault("PGHOST", "localhost")
os.environ.setdefault("PGPORT", "5432")
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ["PGDATABASE"],
'USER': os.environ["PGUSER"],
'PASSWORD': os.environ["PGPASSWORD"],
'HOST': os.environ["PGHOST"],
'PORT': os.environ["PGPORT"],
}
}
Затем я использую railway.app CLI, и когда я делаю что-то, что не связано с БД (например, railway run python manage.py collectstatic
), все работает нормально, но когда я пытаюсь мигрировать, появляется ошибка, например:
django.db.utils.OperationalError: could not translate host name "postgres.railway.internal" to address: nodename nor servname provided, or not known
Кажется, что нет связи с БД. Может быть, я что-то упустил? Буду признателен за любую попытку помочь! :)