# `Dagger.Service`
[🔗](https://github.com/dagger/dagger/blob/v0.20.5/sdk/elixir/lib/dagger/gen/service.ex#L2)

A content-addressed service providing TCP connectivity.

# `t`

```elixir
@type t() :: %Dagger.Service{client: term(), query_builder: term()}
```

# `endpoint`

```elixir
@spec endpoint(t(), port: integer() | nil, scheme: String.t() | nil) ::
  {:ok, String.t()} | {:error, term()}
```

Retrieves an endpoint that clients can use to reach this container.

If no port is specified, the first exposed port is used. If none exist an error is returned.

If a scheme is specified, a URL is returned. Otherwise, a host:port pair is returned.

# `hostname`

```elixir
@spec hostname(t()) :: {:ok, String.t()} | {:error, term()}
```

Retrieves a hostname which can be used by clients to reach this container.

# `id`

```elixir
@spec id(t()) :: {:ok, Dagger.ServiceID.t()} | {:error, term()}
```

A unique identifier for this Service.

# `ports`

```elixir
@spec ports(t()) :: {:ok, [Dagger.Port.t()]} | {:error, term()}
```

Retrieves the list of ports provided by the service.

# `start`

```elixir
@spec start(t()) :: {:ok, t()} | {:error, term()}
```

Start the service and wait for its health checks to succeed.

Services bound to a Container do not need to be manually started.

# `stop`

```elixir
@spec stop(t(), [{:kill, boolean() | nil}]) :: {:ok, t()} | {:error, term()}
```

Stop the service.

# `sync`

```elixir
@spec sync(t()) :: {:ok, t()} | {:error, term()}
```

Forces evaluation of the pipeline in the engine.

# `terminal`

```elixir
@spec terminal(t(), [{:cmd, [String.t()]}]) :: t()
```

# `up`

```elixir
@spec up(t(), ports: [Dagger.PortForward.t()], random: boolean() | nil) ::
  :ok | {:error, term()}
```

Creates a tunnel that forwards traffic from the caller's network to this service.

# `with_hostname`

```elixir
@spec with_hostname(t(), String.t()) :: t()
```

Configures a hostname which can be used by clients within the session to reach this container.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
