test: ["CMD", "curl", "-f", "http://localhost"]
```
Using `CMD-SHELL` runs the command configured as a string using the container's default shell
(`/bin/sh` for Linux). Both of the following forms are equivalent:
```yml
test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
```
```yml
test: curl -f https://localhost || exit 1
```
`NONE` disables the healthcheck, and is mostly useful to disable the Healthcheck Dockerfile instruction set by the service's Docker image. Alternatively,
the healthcheck set by the image can be disabled by setting `disable: true`:
```yml
healthcheck:
disable: true
```
### `hostname`
`hostname` declares a custom host name to use for the service container. It must be a valid RFC 1123 hostname.
### `image`
`image` specifies the image to start the container from. `image` must follow the Open Container Specification
[addressable image format](https://github.com/opencontainers/org/blob/master/docs/docs/introduction/digests.md),
as `[<registry>/][<project>/]<image>[:<tag>|@<digest>]`.
```yml
image: redis
image: redis:5
image: redis@sha256:0ed5d5928d4737458944eb604cc8509e245c3e19d02ad83935398bc4b991aac7
image: library/redis
image: docker.io/library/redis
image: my_private.registry:5000/redis
```
If the image does not exist on the platform, Compose attempts to pull it based on the `pull_policy`.
If you are also using the [Compose Build Specification](build.md), there are alternative options for controlling the precedence of
pull over building the image from source, however pulling the image is the default behavior.
`image` may be omitted from a Compose file as long as a `build` section is declared. If you are not using the Compose Build Specification, Compose won't work if `image` is missing from the Compose file.
### `init`
`init` runs an init process (PID 1) inside the container that forwards signals and reaps processes.
Set this option to `true` to enable this feature for the service.
```yml
services:
web:
image: alpine:latest
init: true
```
The init binary that is used is platform specific.
### `ipc`
`ipc` configures the IPC isolation mode set by the service container.
- `shareable`: Gives the container its own private IPC namespace, with a
possibility to share it with other containers.
- `service:{name}`: Makes the container join another container's
(`shareable`) IPC namespace.
```yml
ipc: "shareable"
ipc: "service:[service name]"
```
### `isolation`
`isolation` specifies a container’s isolation technology. Supported values are platform specific.
### `labels`
`labels` add metadata to containers. You can use either an array or a map.
It's recommended that you use reverse-DNS notation to prevent your labels from conflicting with
those used by other software.
```yml
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
com.example.label-with-empty-value: ""
```
```yml
labels:
- "com.example.description=Accounting webapp"
- "com.example.department=Finance"
- "com.example.label-with-empty-value"
```
Compose creates containers with canonical labels:
- `com.docker.compose.project` set on all resources created by Compose to the user project name
- `com.docker.compose.service` set on service containers with service name as defined in the Compose file
The `com.docker.compose` label prefix is reserved. Specifying labels with this prefix in the Compose file
results in a runtime error.
### `label_file`
{{< summary-bar feature_name="Compose label file" >}}
The `label_file` attribute lets you load labels for a service from an external file or a list of files. This provides a convenient way to manage multiple labels without cluttering the Compose file.
The file uses a key-value format, similar to `env_file`. You can specify multiple files as a list. When using multiple files, they are processed in the order they appear in the list. If the same label is defined in multiple files, the value from the last file in the list overrides earlier ones.