Проблемы со сборкой Dockerfile на GitHub Actions

Я перестроил свой проект Django на GitHub. Раньше мой Dockerfile работал так:

# Base image
ARG arch=amd64
FROM --platform=linux/${arch} python:3

# Set work directory
WORKDIR /appname

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

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

# Copy project
COPY . .

# Set default environment variables
ENV DJANGO_SETTINGS_MODULE=appname.settings
ENV DEBUG=False

# Copy entrypoint script
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Command to run on container start
ENTRYPOINT ["/entrypoint.sh"]

где "appname" было основным репозиторием моего Django-приложения, в котором также лежал Dockerfile. Я изменил структуру приложения, чтобы сделать его намного чище. Теперь мой проект выглядит так (из корневого каталога/GitHub repo):

.git/
.github/
apps/
appname/
config/
templates/
.gitignore
manage.py
requirements.txt
README.md

Dockerfile и entrypoint.sh теперь находятся в config/docker/..

Итак, я изменил свой Dockerfile:

# Base image
ARG arch=amd64
FROM --platform=linux/${arch} python:3

WORKDIR /config

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV DJANGO_SETTINGS_MODULE=appname.settings
ENV DEBUG=False

# Install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt --no-cache-dir

# Copy things
COPY . .

# Entrypoint script
RUN chmod +x entrypoint.sh

# Command to run on container start
ENTRYPOINT ["entrypoint.sh"]

Но я продолжаю получать ошибку, что requirements.txt не найден, когда GitHub Actions пытается развернуть, локально на моей машине я могу собрать образ Docker из этого Dockerfile. Я уже много чего перепробовал, но ничего не помогает.

Сообщение об ошибке от GitHub Actions выглядит так:

#7 [linux/amd64 2/5] COPY requirements.txt .
#7 ERROR: failed to calculate checksum of ref f0eg9y80n08nz8zngn17kwwx5::m58umy2tp7muiat6aia21a4pf: "/requirements.txt": not found

Мой шаг развертывания для GitHub Actions, который не работает, выглядит следующим образом:

- name: Build docker image
      uses: docker/build-push-action@v6
      with:
        no-cache: true
        context: ..
        file: ./config/docker/dockerfile
        push: false
        tags: ${{ secrets.DOCKERHUB_USERNAME }}/appname:latest
        platforms: linux/amd64,linux/arm64
        build-args: arch=amd64

Я уже попробовал все варианты путей в Dockerfile, я уже попробовал различные варианты контекста в deploy.yml, а также попробовал переместить requirements.txt в тот же каталог, что и Dockerfile.

Я ожидал, что GitHub Actions установит требования, поскольку Docker делает это локально при попытке собрать образ.

Использование команды docker build в терминале помогло мне проанализировать проблему.

Я решил эту проблему, изменив свой Dockerfile следующим образом:

# Base image
ARG arch=amd64
FROM --platform=linux/${arch} python:3

WORKDIR /app

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV DJANGO_SETTINGS_MODULE=appname.settings
ENV DEBUG=False

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

# Copy things
COPY .. .

# Entrypoint script
RUN chmod +x config/docker/entrypoint.sh

# Command to run on container start
ENTRYPOINT ["config/docker/entrypoint.sh"]

И изменил контекст в моем deploy.yml обратно на .

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