Как настроить Dockerize для Django и приложения для голосования в одной настройке docker-compose?

У меня есть проект на Django, который связан с приложением Vite, и я пытаюсь настроить Docker Compose для совместного запуска обоих приложений. Однако я сталкиваюсь с проблемами при создании и запуске контейнеров. Я использую vite для установки tailwind, и все работает нормально без docker, я уже настроил проект django в docker, но мне нужно настроить внешнее приложение vite, которое называется webapp, оно находится в том же каталоге, что и django.

Цель:

  • Серверная часть Django → работает на 8000
  • Интерфейс Vite → работает на 3000 и подключается к Django
  • Обе службы должны запускаться с использованием docker-compose up --build

Однако, когда я пытаюсь запустить docker-compose up --build, я получаю несколько ошибок, или даже docker выполняет сборку без работы vite.

Проблема: При запуске docker-compose up --build я получаю различные ошибки, в том числе:

  • не удалось решить: не удалось прочитать файл dockerfile: открыть файл Dockerfile: такого файла или каталога нет
  • Vite не запускается должным образом в контейнере, даже если Django работает.

Мой файловый каталог:

For_Testing_Purpose-1/
django_project
 ┣ __pycache__
 ┣ asgi.py
 ┣ settings.py
 ┣ urls.py
 ┣ wsgi.py
 ┗ __init__.py
homepage
 ┣ migrations
 ┣ __pycache__
 ┣ admin.py
 ┣ apps.py
 ┣ models.py
 ┣ tests.py
 ┣ urls.py
 ┣ views.py
 ┗ __init__.py
templates
 ┗ home.html
webapp
 ┣ dist
 ┃ ┣ .vite
 ┃ ┃ ┗ manifest.json
 ┃ ┣ assets
 ┃ ┃ ┗ tailwind-4t-_kGsy.css
 ┃ ┗ vite.svg
 ┣ node_modules
 ┣ public
 ┃ ┗ vite.svg
 ┣ src
 ┃ ┗ style.css
 ┣ .gitignore
 ┣ index.html
 ┣ package-lock.json
 ┣ package.json
 ┗ vite.config.ts
.dockerignore
db.sqlite3
docker-compose.yml
Dockerfile
manage.py
requirements.txt

Я подключаюсь к приложению django и vite с помощью django_vite, и нет никаких проблем с тем, что оно отлично работает при запуске vite и приложения django, но в docker у меня проблемы с этим.

Я предоставлю свой Dockerfile и docker-compose.yml, не добавляя к ним никаких node js или vite, потому что все мои попытки закончились неудачей:

Файл Dockerfile:

# Pull base image
FROM python:3.13-slim-bullseye

# Set environment variables
ENV PIP_DISABLE_PIP_VERSION_CHECK 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work directory
# WORKDIR /code/website_core
WORKDIR /code

# Install dependencies
COPY ./requirements.txt .
RUN pip install -r requirements.txt

# Copy project
COPY . .

Docker-compose.yml

services:
  web:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db

  db:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - "POSTGRES_HOST_AUTH_METHOD=trust"

volumes:
  postgres_data:

Чтобы запустить vite, я захожу в каталог cd webapp затем npm run dev

Конечно, с моим подходом что-то не так, но я пытаюсь разобраться в этом и изо всех сил стараюсь!!

То, что Я Пробовал С Самого Начала:

  1. Проверенная установка Docker:

  2. Запустил docker, запустив hello-world, чтобы проверить, работает ли Docker. Создал и скомпилировал образы серверной части и интерфейса Docker по отдельности:

  3. Пробовал запускать контейнеры отдельно:

  4. Проверил docker-compose.yml и структуру каталогов:

  5. Запустил docker-compose up -build и получил ошибки: Получено, не удалось решить: не удалось прочитать dockerfile: открыть Dockerfile: такого файла или каталога нет. Также появилось предупреждение о том, что атрибут версии устарел.

  6. Проверено, может ли Docker видеть файлы:

  7. Убедился, что я нахожусь в правильном каталоге, прежде чем запускать docker-compose up --build

  8. Обновлены Docker и Docker Compose:

Вопросы: Как я могу правильно настроить Vote и Django для взаимодействия в Docker?

Это мой репозиторий, если вы хотите взглянуть Репозиторий на Github

Мы были бы очень признательны за любые рекомендации по этому поводу! 🚀

Ваш файл dockerfile

FROM python:3.13-slim-bullseye as backend

ENV PIP_DISABLE_PIP_VERSION_CHECK 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code

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

COPY . .

FROM node:15.12.0-buster AS frontend

WORKDIR /webapp/

RUN --mount=type=cache,target=/root/.npm,rw \
    --mount=type=bind,source=webapp/package.json,target=package.json \
    --mount=type=bind,source=webapp/package-lock.json,target=package-lock.json \
    npm ci

COPY --link webapp/ .

RUN npm run dev

Ваш docker-compose

services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
      target: backend
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

  frontend:
    build:
      context: .
      dockerfile: Dockerfile
      target: frontend
    command: npm run dev
    volumes:
      - webapp:/webapp
    ports:
      - "3000:3000"

  db:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - "POSTGRES_HOST_AUTH_METHOD=trust"

volumes:
  postgres_data:

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