Код React не обновляется при изменении кода

Я обслуживаю react frontend через django. Я вижу, что изменения кода обновляются в файле в контейнере docker на дроплете digital ocean, но фронтенд не обновляется с последними изменениями. Вот что я пробовал.

Вот мой Dockerfile.prod

# pull the official base image
FROM python:3.8.12-bullseye

# set work directory
WORKDIR /usr/src/app

# copy project
COPY . .

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1


# install dependencies
RUN apt-get update \
    && apt-get install ffmpeg libsm6 libxext6  -y \
    && apt-get install -y netcat \
    && apt-get install -y curl \
    && curl --silent --location https://deb.nodesource.com/setup_12.x | bash - \
    && apt-get install -y nodejs

RUN pip install -r requirements.txt

# copy entrypoint.sh
RUN sed -i 's/\r$//g' /usr/src/app/entrypoint.prod.sh
RUN chmod +x /usr/src/app/entrypoint.prod.sh


# run entrypoint.sh
ENTRYPOINT ["/usr/src/app/entrypoint.prod.sh"]

Вот моя entrypoint.prod.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]; then
  echo "Waiting for postgres..."

  while ! nc -z $SQL_HOST $SQL_PORT; do
    sleep 0.1
  done

  echo "PostgreSQL started"
fi

(cd frontend && npm install && npm run prod)

exec "$@"

Выход контейнера:

Waiting for postgres...
PostgreSQL started
npm WARN frontend@1.0.0 No description
npm WARN frontend@1.0.0 No repository field.

added 417 packages from 276 contributors and audited 417 packages in 15.212s

36 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

> frontend@1.0.0 prod /usr/src/app/frontend
> webpack --mode production --entry ./src/index.js --output-path ./static/

Failed to load ./.env.
assets by status 16.3 MiB [cached] 22 assets
assets by path . 237 KiB
  asset main.js 233 KiB [emitted] [minimized] (name: main) 1 related asset
  asset 131.js 4.3 KiB [compared for emit] [minimized]
orphan modules 530 KiB [orphan] 299 modules
runtime modules 6.95 KiB 10 modules
built modules 494 KiB [built]
  modules by path ./node_modules/ 220 KiB 52 modules
  modules by path ./src/ 274 KiB
    optional modules 1.72 KiB [optional] 22 modules
    modules by path ./src/*.css 1.24 KiB
      ./node_modules/css-loader/dist/cjs.js!./src/index.css 805 bytes [built] [code generated]
      ./node_modules/css-loader/dist/cjs.js!./src/App.css 460 bytes [built] [code generated]
    ./src/index.js + 106 modules 270 KiB [built] [code generated]
    ./src/static_media/ sync ^\.\/.*\.png$ 436 bytes [built] [code generated]
    ./node_modules/css-loader/dist/cjs.js!./src/components/Classifier/Classifier.css 661 bytes [built] [code generated]
webpack 5.55.1 compiled successfully in 12410 ms
[2021-10-18 10:01:28 +0000] [43] [INFO] Starting gunicorn 20.1.0
[2021-10-18 10:01:28 +0000] [43] [INFO] Listening at: http://0.0.0.0:8000 (43)
[2021-10-18 10:01:28 +0000] [43] [INFO] Using worker: sync
[2021-10-18 10:01:28 +0000] [45] [INFO] Booting worker with pid: 45

EXTRAS:

Вот мой рабочий процесс на github

build:
jobs:
      .....
      - name: Build images
        run: |
          docker-compose -f docker-compose.ci.yml build
       .....

  deploy:
    .....
            docker-compose -f docker-compose.prod.yml up -d --build

Вот docker-compose.prod.yml

version: "3.9"

services:
  web:
    image: "${WEB_IMAGE}"
    container_name: website
    command: bash -c "gunicorn server.wsgi:application --bind 0.0.0.0:8000 && python manage.py collectstatic"
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    ports:
      - 8000:8000
    env_file: .env

  nginx:
    image: "${NGINX_IMAGE}"
    container_name: nginx
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    ports:
      - 80:80
    depends_on:
      - web

Вот docker-compose.ci.yml

version: "3.9"

services:
  web:
    build:
      context: ./backend
      dockerfile: Dockerfile.prod
    image: "${WEB_IMAGE}"
    command: gunicorn server.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    expose:
      - 8000
    env_file: .env

  nginx:
    build:
      context: ./nginx
    image: "${NGINX_IMAGE}"
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    ports:
      - 80:80
    depends_on:
  - web
Вернуться на верх