How to deploy properly to production

I’d like to ask how can I deploy my web app properly in following setup.

There will be db server and app server that will not change often.
Then there will be some volumes containers with space for DB and log files.
Last part is data-only container with application deployables, which will be shared to App server container as volume.

How to make it work with remote deploy?
Should I install the “constant” containers manually and then just stop them while replacing the app. image?

I’d like to have some tool which will pause properly the server containers, stop and replace the application data-only container and start again everything.

Can Docker-Compose do it?
Is it good idea to wrap the application as image? If I will replace the content of the app image in every run, wouldn’t it bloat the image with old layers?

Can I do it, without stopping the application? Some ngnix proxy? Is Compose enough or should I go with some Flocker, Fleet or etc.?

I have so many questions, I hope to get at least some hints.