# Docker Compose notes This integration is for an existing Mastodon deployment. It does not create a Mastodon stack and does not add a new long-running application container. The host-side script calls commands equivalent to: ```sh docker compose exec -T -e RAILS_ENV=production web bin/rails runner '...' docker compose exec -T -e RAILS_ENV=production web bin/tootctl email-domain-blocks add ... ``` The official Mastodon Compose file uses a `web` service for the Rails application. Other distributions and custom Compose files may use a different service name; set `--compose-service` accordingly. Before running the blocker, these two checks should succeed from the Compose directory: ```sh docker compose exec -T web bin/rails runner 'puts EmailDomainBlock.count' docker compose exec -T web bin/tootctl email-domain-blocks list --help ``` If the local deployment uses a wrapper, a different Compose project directory, or the old `docker-compose` binary, adjust `--compose-dir` and `--compose-command`. The Python program does not need access to the database container and should not be given database credentials.