Are there any ways of implementing grayscale deployment of services with docker swarm(stack)?

Are there any ways of implementing grayscale deployment of services with docker swarm(stack)?

for example, I have a spring cloud service cluster. There are 3 user-service containers, 3 product-service containers, now I want to update user-service in a grayscale deployment style, can I update only one container to the wanted docker image version? and if it works well, then update all containers of user-service?

another way is: create a new docker-compose.yml which only has one replica of user-service container, and make it join the same overlay as the existing user-service containers. if it works fine, stop all old-version user-service containers and use docker service scale new_stack_user-service=3 to the new version of user-service to make it have 3 replicas.