# Deployment strategy on fly.io

> Understand how deployment works on Fly.io, where each service gets its own Dockerfile and services talk to each other over the internal .internal domain.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2024-01-03 | Topics: [Services](https://flaviocopes.com/tags/services/), [Docker](https://flaviocopes.com/tags/docker/) | Canonical: https://flaviocopes.com/deployment-strategy-on-flyio/

Found this interesting.

I was used to similar services that used a single file named `docker-compose.yaml` to set up multiple services (I built a free [Docker Compose generator](https://flaviocopes.com/tools/docker-compose-generator/) if you need to write one of those).

On fly, each service in your app lives on its dedicated service, deployed independently, each with its own Dockerfile.

[Also see my Docker tutorials](https://flaviocopes.com/tags/docker/).

If you have multiple services, you communicate between them inside fly using the `.internal` domain, like this: `myappname.internal`

You can also prepend the region to point to a specific one, for example:

`cdg.my-app.internal`

Note that you also need the internal port, as specified in the app `fly.toml`, for example `cdg.my-app.internal:8080`

I wasn’t able to set this up with my PocketBase instance yet, but that’s the goal.

Related issues [https://github.com/pocketbase/js-sdk/issues/21](https://github.com/pocketbase/js-sdk/issues/21)
