The docker compose references the latest tag, but that tag is not dynamic, it is only the latest at a point in time.

To ensure you have the most recent latest tag - you can always run this command: docker pull fusionauth/fusionauth-app:latest

This is a common point of confusion, and there are lots of opinions on it as you might imagine. For your reading pleasure:

https://vsupalov.com/docker-latest-tag/
https://blog.container-solutions.com/docker-latest-confusion