How to Execute a Script in a Distroless Fluent-bit Container?

Better Stack Team
Updated on August 10, 2024

A Fluent-bit container typically uses a distroless image, which only contains the application and its runtime dependencies. This type of image lacks common tools like a shell, package manager, or other utilities.

If you need to execute a script within the Fluent-bit container, such as setting up an entry point script, you'll need to create your own image. This custom image should include a shell binary and the entry point script. Here’s an example of how you can do that:

Dockerfile
FROM fluent/fluent-bit
COPY bash /bin/bash
COPY entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"]

This approach is akin to installing bash on a scratch Docker image, a process detailed in this post.

Alternatively, you can use any base image that includes a package manager and then install Fluent-bit using the package manager. This method is covered in the Fluent-bit documentation.

For example, your Dockerfile could look like this:

Dockerfile
FROM alpine:3.14
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Install Fluent-bit using the one-line install script
RUN curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
RUN systemctl enable fluent-bit

To continue learning more about Fluent-bit, check out our guide on Fluent-bit, which walks you through the basics and more advanced concepts.

Got an article suggestion? Let us know
Explore more
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.