Best practice for deploying dockerized code over multiple servers

We are planning a deployment process for a new app we’ll be developing using Docker. Developers will work on their local machines in an aspnetcore container. They will checkin code to a CI server, which will build and run the unit tests. On success the CI server will deploy to the final webservers, which we plan to run the same containers.

My question is, whats the best way to set this up?

Our CI server is already running aspnetcore (Windows server) so I dont think we need to add Docker there. I think it could do just the build + tests, then copy the source files to the webserver. There on the webserver we would build + publish again within the aspnetcore container (web server is linux). I’d have a script running on the webserver to detect new files copied in that would trigger the docker re-build. Does this sound right? Is there a better way to do this?