MassonNN / masson-aiogram-template

This is a scalable and functional template for any bots which will be made with aiogram 3.x
MIT License
111 stars 17 forks source link

Ошибка с контекстом при билде проекта (forbidden path outside the build context: ../poetry.lock ()) #18

Open simonoffcc opened 6 months ago

simonoffcc commented 6 months ago

При билде проекта через sudo make project-start вот такая ошибка:

ERROR: Service 'bot' failed to build: COPY failed: forbidden path outside the build context: ../poetry.lock ()
make: *** [Makefile:61: project-start] Error 1

В ней очевидно и понятно что не так, при этом прогуглив, нашёл такое решение: https://stackoverflow.com/questions/69615253/copy-failed-forbidden-path-outside-the-build-context-docker-compose. Однако сам сделал немного по-другому, заменив в Dockerfile с

WORKDIR /app
COPY ../poetry.lock pyproject.toml ./

на

WORKDIR /app
COPY poetry.lock pyproject.toml ./

И вроде как всё заработало. Я думаю, проблема не только у меня, либо я что-то не так делаю. Поправьте если так.

Предположили, что проблема может быть с контекстом. Вот соответствующие выводы: изображение изображение

Полный Dockerfile (не изменён, такой же как в шаблоне):

FROM python:3.10-slim as python-base

ENV POETRY_VERSION=1.5.1 \
    POETRY_HOME=/opt/poetry \
    POETRY_VENV=/opt/poetry-venv \
    POETRY_CACHE_DIR=/opt/.cache

FROM python-base as poetry-base

RUN python3 -m venv $POETRY_VENV \
    && $POETRY_VENV/bin/pip install -U pip setuptools \
    && $POETRY_VENV/bin/pip install poetry==${POETRY_VERSION}

FROM python-base as app

COPY --from=poetry-base ${POETRY_VENV} ${POETRY_VENV}
ENV PATH="${PATH}:${POETRY_VENV}/bin"

WORKDIR /app
COPY ../poetry.lock pyproject.toml ./

RUN poetry check && \
    poetry install --no-interaction --no-cache --no-root

COPY .. .
CMD ["poetry", "run", "python", "-m", "src.bot"]

Полный docker-compose.yml (не изменён, такой же как в шаблоне):

version: '3.7'
services:
  redis:
    build:
      context: buildfiles
      dockerfile: redis.dockerfile
    env_file:
      - .env
    restart: on-failure
    ports:
      - "6378:6378"
  db:
    image: postgres:15-alpine
    env_file:
      - .env
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: on-failure
    ports:
      - "5432:5432"
  bot:
    build:
      context: .
      dockerfile: buildfiles/Dockerfile
    env_file:
      - .env
    restart: always
    depends_on:
      - db
      - redis

volumes:
  pgdata: