# Application

> The service that runs your code, from a Docker image or a Git repository. Add it, configure it, turn it off.

Source: https://docs.fransys.cloud/en/projets/application/ Checked against the console on 2026-10-23.

## Add an application

In the project, click **Add a service**, then **Application**: from a Docker image, built by your CI or published on a registry. Any language, any framework.

The service is created with its default configuration. Fransys adds its settings (image, port, address…) within one to two minutes; they show up in the panel by themselves. Nothing runs until the project is deployed.

## Docker image or Git repository

In the **General** tab, the **Code origin** decides where the image comes from:
- **External image**: enter the **Docker image**, for example `ghcr.io/your-team/app:latest`. For a private image, see below;
- **GitHub or GitLab**: Fransys builds the image on every push. See [From GitHub or GitLab](https://docs.fransys.cloud/en/projets/github-gitlab/).

After this choice, new settings may appear after a few seconds: the console shows **Updating settings…** in the meantime.

## Configure the service

The panel sorts the settings into tabs:

| Tab | What you set there |
|---|---|
| **General** | The platform, the code origin, the Docker image, the container port, the private registry. |
| **Resources** | CPU and memory per replica (reservations and limits), the number of replicas, the GPU. |
| **Storage** | Volumes: mount point and size. |
| **Variables** | Environment variables. See [Variables and secrets](https://docs.fransys.cloud/en/projets/variables-et-secrets/). |
| **Deployment commands** | Commands run before or after the first install, before or after an update. |
| **Scheduled tasks** | Recurring commands. See [Scheduled tasks](https://docs.fransys.cloud/en/projets/taches-planifiees/). |
| **Network** | Access from the internet, domains, redirects, the outbound IP. |
| **Security** and **Advanced** | The container and pod security context, the Kubernetes service account, probes, annotations and labels. |

The **Search a setting** field finds a setting by name (port, domain, memory…). An empty tab fills up depending on what you choose in the other tabs.

- Each setting is saved as soon as you leave the field.
- It applies at the project's next deployment.
- An empty required setting blocks the deployment: it's flagged **Required to deploy**.

## Private image

In **General**, turn on **Private registry (authentication)**, then fill in the **Registry username** and the **Registry password**. The password is encrypted: once saved, you can't read it back.

## Resources and replicas

- **Reservations**: what each replica is guaranteed, in CPU and memory. This is what takes up room on the cluster's machines.
- **Limits**: what a replica can't go beyond. Without a limit, it takes whatever is free.
- **Number of replicas**: in **Fixed** mode, the number you choose; in **Automatic** mode, Fransys adds more as load grows. See [Scaling](https://docs.fransys.cloud/en/clusters/montee-en-charge/).
- **GPU**: **None** or **NVIDIA**, on a cluster that has GPU machines. See [GPU](https://docs.fransys.cloud/en/clusters/gpu/).

## Deployment commands

To run a command at the right moment (database migrations, clearing a cache…), add it in **Deployment commands**, at one of four moments:
- **Before the first install** and **After the first install**;
- **Before an update** and **After an update**.

The **Execution order** sorts several commands at the same moment.

## Probes

In **Advanced**, the **Startup probe**, the **Liveness probe** and the **Readiness probe** tell Fransys when the service is ready to receive traffic, and when to restart it. If your application is slow to start, tune the startup probe rather than turning it off.

## Public or internal address

In **Network**, **Reachable from the internet** decides whether the service has a public address. A public application gets a `fransysapp.com` address, over HTTPS. On the diagram, the link on the card opens it in a new tab.

A service that's **Internal to the project** has no public address: only the project's services can reach it.

## Workers, queues, scheduled tasks

Fransys doesn't let you change the container command. To run another process of the same application (a queue, a websocket):
- copy the service, then pick its role with an environment variable that your entrypoint reads. Your agent can prepare this copy in a plan;
- for a scheduled job, add a recurring command: see [Scheduled tasks](https://docs.fransys.cloud/en/projets/taches-planifiees/).

## Fixed outbound IP

By default, the service goes out to the internet with a dynamic, shared address. If a partner needs to allow your address, set the **Outbound IP** (**Network** tab) to a **New fixed IP**. A fixed IP belongs to the organisation: several services can use it. Each deployed fixed IP is billed every month (see [Pricing](https://docs.fransys.cloud/en/budget/grille-tarifaire/)).

Deleting a fixed IP can't be undone: the address is released and you may not be able to get it back.

## ARM processors

On a cluster with ARM machines, your Docker images must be built for `arm64`.

## Turn off, rename, delete

- **Service active**: when turned off, the service is no longer deployed, but its configuration is kept.
- **Rename the service**: only the name changes.
- **Delete the service**: the service and its configuration are removed from the project. If it's running, it stops at the next deployment.
