You can build an image, push it to a repo, and then start it up using ./launcher start-cmd app to get the docker command to start up the container (but you’ll substitute your container repo for the local one).
And yet, then you need to migrate the database, precompile assets, and so on.
If it’s downtime that you want to avoid, the two-container setup lets you build a new container while the old one continues to run and then it handles the migrations and such.
If you want to be extra careful you can set SKIP_POST_DEPLOYMENT_MIGRATIONS in your app.yml and then do rake db:ensure_post_migrations db:migrate after the new container is started. Not doing so can migrate the database such that the old container can no longer use it. It’s not often a problem, and then, not for very long.