logstash/docker/templates/Dockerfile.erb
kaisecheng 2d69d06809
use UBI9 as base image (#17156)
- the base image change from ubi8 to ubi9
- remove installation of curl
2025-02-28 09:29:19 +00:00

135 lines
5.1 KiB
Text

# This Dockerfile was generated from templates/Dockerfile.erb
<%# image_flavor 'full', oss', 'wolfi' -%>
<% if local_artifacts == 'false' -%>
<% url_root = 'https://artifacts.elastic.co/downloads/logstash' -%>
<% else -%>
<% url_root = 'http://localhost:8000' -%>
<% end -%>
<% if image_flavor == 'oss' -%>
<% tarball = "logstash-oss-#{elastic_version}-linux-#{arch}.tar.gz" -%>
<% license = 'Apache 2.0' -%>
<% else -%>
<% tarball = "logstash-#{elastic_version}-linux-#{arch}.tar.gz" -%>
<% license = 'Elastic License' -%>
<% end -%>
<% if image_flavor == 'full' || image_flavor == 'oss' -%>
<% base_image = 'docker.elastic.co/ubi9/ubi-minimal' -%>
<% go_image = 'golang:1.23' -%>
<% package_manager = 'microdnf' -%>
<% else -%>
<% base_image = 'docker.elastic.co/wolfi/chainguard-base' -%>
<% go_image = 'docker.elastic.co/wolfi/go:1.23' -%>
<% package_manager = 'apk' -%>
<% end -%>
<% locale = 'C.UTF-8' -%>
# Build env2yaml
FROM <%= go_image %> as builder-env2yaml
COPY env2yaml/env2yaml.go /tmp/go/src/env2yaml/env2yaml.go
COPY env2yaml/go.mod /tmp/go/src/env2yaml/go.mod
COPY env2yaml/go.sum /tmp/go/src/env2yaml/go.sum
WORKDIR /tmp/go/src/env2yaml
RUN go build
# Build main image
# Minimal distributions do not ship with en language packs.
FROM <%= base_image %>
ENV ELASTIC_CONTAINER true
ENV PATH=/usr/share/logstash/bin:$PATH
ENV LANG=<%= locale %> LC_ALL=<%= locale %>
WORKDIR /usr/share
COPY --from=builder-env2yaml /tmp/go/src/env2yaml/env2yaml /usr/local/bin/env2yaml
COPY config/pipelines.yml config/log4j2.properties config/log4j2.file.properties config/
<% if image_flavor == 'oss' -%>
COPY config/logstash-oss.yml config/logstash.yml
<% else -%><%# 'full', 'wolfi' -%>
COPY config/logstash-full.yml config/logstash.yml
<% end -%>
COPY pipeline/default.conf pipeline/logstash.conf
COPY bin/docker-entrypoint /usr/local/bin/
# Install packages
RUN for iter in {1..10}; do \
<% if image_flavor == 'full' || image_flavor == 'oss' -%>
<%= package_manager %> update -y && \
<%= package_manager %> upgrade -y && \
<%= package_manager %> install -y procps findutils tar gzip && \
<%= package_manager %> install -y openssl && \
<%= package_manager %> install -y which shadow-utils && \
<%= package_manager %> clean all && \
<% else -%><%# 'wolfi' -%>
<%= package_manager %> add --no-cache curl bash openssl && \
<% end -%>
exit_code=0 && break || \
exit_code=$? && echo "packaging error: retry $iter in 10s" && \
<%= package_manager %> clean all && sleep 10; \
done; \
(exit $exit_code)
# Provide a non-root user to run the process
# Add Logstash itself and set permissions
<% if image_flavor == 'full' || image_flavor == 'oss' -%>
RUN groupadd --gid 1000 logstash && \
adduser --uid 1000 --gid 1000 \
--home "/usr/share/logstash" \
--no-create-home \
logstash && \
<% else -%><%# 'wolfi' -%>
RUN addgroup -g 1000 logstash && \
adduser -u 1000 -G logstash \
--disabled-password \
--gecos "" \
--home "/usr/share/logstash" \
--shell "/sbin/nologin" \
--no-create-home \
logstash && \
<% end -%>
curl -Lo - <%= url_root %>/<%= tarball %> | \
tar zxf - -C /usr/share && \
mv /usr/share/logstash-<%= elastic_version %> /usr/share/logstash && \
chown -R logstash:root /usr/share/logstash config/ pipeline/ && \
chmod -R g=u /usr/share/logstash && \
mv config/* /usr/share/logstash/config && \
mv pipeline /usr/share/logstash/pipeline && \
mkdir /licenses && \
mv /usr/share/logstash/NOTICE.TXT /licenses/NOTICE.TXT && \
mv /usr/share/logstash/LICENSE.txt /licenses/LICENSE.txt && \
find /usr/share/logstash -type d -exec chmod g+s {} \; && \
ln -s /usr/share/logstash /opt/logstash && \
chmod 0755 /usr/local/bin/docker-entrypoint && \
rmdir config
WORKDIR /usr/share/logstash
USER 1000
EXPOSE 9600 5044
LABEL org.label-schema.build-date=<%= created_date %> \
org.label-schema.license="<%= license %>" \
org.label-schema.name="logstash" \
org.label-schema.schema-version="1.0" \
org.label-schema.url="https://www.elastic.co/products/logstash" \
org.label-schema.vcs-url="https://github.com/elastic/logstash" \
org.label-schema.vendor="Elastic" \
org.label-schema.version="<%= elastic_version %>" \
org.opencontainers.image.created=<%= created_date %> \
org.opencontainers.image.description="Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" \
org.opencontainers.image.licenses="<%= license %>" \
org.opencontainers.image.title="logstash" \
org.opencontainers.image.vendor="Elastic" \
org.opencontainers.image.version="<%= elastic_version %>" \
description="Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" \
license="<%= license %>" \
maintainer="info@elastic.co" \
name="logstash" \
summary="Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" \
vendor="Elastic"
ENTRYPOINT ["/usr/local/bin/docker-entrypoint"]