https://github.com/cloudlena/healthcheck
A minimal health checked Docker base image
https://github.com/cloudlena/healthcheck
health-check rust
Last synced: 12 months ago
JSON representation
A minimal health checked Docker base image
- Host: GitHub
- URL: https://github.com/cloudlena/healthcheck
- Owner: cloudlena
- License: other
- Created: 2018-12-16T15:16:33.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-05-26T10:48:57.000Z (about 1 year ago)
- Last Synced: 2025-07-07T06:06:10.944Z (12 months ago)
- Topics: health-check, rust
- Language: Rust
- Homepage:
- Size: 36.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Healthcheck
[](https://travis-ci.org/cloudlena/healthcheck)
[](https://github.com/cloudlena/healthcheck/actions)
[](https://hub.docker.com/r/cloudlena/healthcheck)
A base image for minimal Docker images. It is an extension of `scratch` that contains a built in HTTP health check and encourages non-privileged execution.
This image only adds about 2.8M to `scratch` and is intended for running HTTP services written in languages that compile to a binary format (e.g. [Go](https://golang.org) or [Rust](https://www.rust-lang.org)).
## Advantages
- Your binary will be executed using the non privileged `app` user
- A HTTP health check is run every 30 seconds
## Usage
### Rust
```Dockerfile
FROM rust:1 AS builder
WORKDIR /usr/src/myapp
COPY . .
RUN cargo build --release
FROM cloudlena/healthcheck:latest
WORKDIR /usr/myapp
COPY --from=builder /usr/src/app/target/release/myapp .
EXPOSE 8080
ENTRYPOINT ["./myapp"]
```
You can add the following lines to your `Cargo.toml` file to further minimize the size of the final image:
```toml
[profile.release]
opt-level = "z"
lto = true
```
### Go
```Dockerfile
FROM golang:1 AS builder
WORKDIR /usr/src/myapp
COPY . .
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -a -installsuffix cgo -o bin/myapp ./cmd/myapp
FROM healthcheck:latest
WORKDIR /usr/myapp
COPY --from=builder /usr/src/myapp/myapp .
EXPOSE 8080
ENTRYPOINT ["./myapp"]
```
### Customize
You can set the following environment variables in your container to customize the health check:
- `PORT`: The port your app is listening on. Defaults to `8080`.
- `HEALTHCHECK_PATH`: The health check path of your app. Defaults to `/`.