Код 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