Проект Django на AWS не обновляет код после git pull
Я разворачиваю проект Django на AWS. Я запускаю Postgres, Redis, Nginx, а также мой проект на Docker.
Все работает нормально, но когда я что-то меняю на своей локальной машине, отправляю изменения в git, а затем вытаскиваю их на экземпляр AWS, код меняется, файлы обновляются, но они не отображаются на сайте. Только статические файлы обновляются автоматически (я полагаю, из-за Nginx). Вот мой конфиг docker-compose:
version: '3.9'
services:
redis:
image: redis
command: redis-server
ports:
- "6379:6379"
postgres:
image: postgres
environment:
- POSTGRES_USER=
- POSTGRES_PASSWORD=
- POSTGRES_DB=
ports:
- "5432:5432"
web:
image: image_name
build: .
restart: always
command: gunicorn project.wsgi:application --bind 0.0.0.0:8000
env_file:
- envs/.env.prod
ports:
- "8000:8000"
volumes:
- ./staticfiles/:/tmp/project/staticfiles
depends_on:
- postgres
- redis
nginx:
image: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./staticfiles:/home/app/web/staticfiles
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
- ./certbot/www:/var/www/certbot/:ro
- ./certbot/conf/:/etc/nginx/ssl/:ro
depends_on:
- web
Подскажите, пожалуйста, что мне делать?
Я попробовал удалить все из docker и снова составить композицию, но ничего не произошло. Я просмотрел все здесь, но я все еще не понимаю... перезапуск экземпляра также не работает. Я попробовал очистить кэш redis, потому что у меня есть кэширование шаблонов, и все равно ничего не произошло.
После обновления кода на экземпляре EC2 необходимо собрать новый web
образ docker из этого нового кода. Если вы просто перезапускаете процесс, то docker-compose будет продолжать использовать последний созданный вами образ докера
Вам необходимо выполнить следующую последовательность команд (на экземпляре EC2):
docker-compose build web
docker-compose up -d
Вы видите, что статические файлы изменяются немедленно, без пересборки образа docker, потому что вы подключаетесь к этим файлам через docker volume.
Я нашел проблему... это было потому, что у меня было кэширование шаблона. Если я удалю кэш и сделаю то, что предложил @MarkB, все обновится. Я не понимаю, почему это происходит, так как я пробовал удалять весь кэш redis после изменений, но я думаю, что это решит мои проблемы.