Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DRAFT :: Enhancement: solve issue #29255 - Change docker image from CentOS to Ubuntu20.04 #29374

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions dev-tools/packaging/packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -475,8 +475,8 @@ shared:
- &agent_docker_spec
<<: *agent_binary_spec
extra_vars:
from: 'centos:7'
buildFrom: 'centos:7'
from: 'ubuntu:20.04'
buildFrom: 'ubuntu:20.04'
dockerfile: 'Dockerfile.elastic-agent.tmpl'
docker_entrypoint: 'docker-entrypoint.elastic-agent.tmpl'
user: '{{ .BeatName }}'
Expand All @@ -495,8 +495,8 @@ shared:
- &agent_docker_arm_spec
<<: *agent_docker_spec
extra_vars:
from: 'arm64v8/centos:7'
buildFrom: 'arm64v8/centos:7'
from: 'arm64v8/ubuntu:20.04'
buildFrom: 'arm64v8/ubuntu:20.04'

- &agent_docker_cloud_spec
<<: *agent_docker_spec
Expand Down Expand Up @@ -653,8 +653,8 @@ shared:
- &docker_spec
<<: *binary_spec
extra_vars:
from: 'centos:7'
buildFrom: 'centos:7'
from: 'ubuntu:20.04'
buildFrom: 'ubuntu:20.04'
user: '{{ .BeatName }}'
linux_capabilities: ''
files:
Expand All @@ -666,14 +666,16 @@ shared:
- &docker_arm_spec
<<: *docker_spec
extra_vars:
from: 'arm64v8/centos:7'
buildFrom: 'arm64v8/centos:7'
from: 'arm64v8/ubuntu:20.04'
buildFrom: 'arm64v8/ubuntu:20.04'

# TODO: Did I must change those to ?
- &docker_ubi_spec
extra_vars:
image_name: '{{.BeatName}}-ubi8'
from: 'docker.elastic.co/ubi8/ubi-minimal'

# TODO: Did I must change those to ?
- &docker_arm_ubi_spec
extra_vars:
image_name: '{{.BeatName}}-ubi8'
Expand Down
54 changes: 38 additions & 16 deletions dev-tools/packaging/templates/docker/Dockerfile.elastic-agent.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,48 @@ ENV BEAT_SETUID_AS={{ .user }}
{{- if contains .from "ubi-minimal" }}
RUN for iter in {1..10}; do microdnf update -y && microdnf install -y shadow-utils jq && microdnf clean all && exit_code=0 && break || exit_code=$? && echo "microdnf error: retry $iter in 10s" && sleep 10; done; (exit $exit_code)
{{- else }}
# Installing jq needs to be installed after epel-release and cannot be in the same yum install command.
RUN case $(arch) in aarch64) YUM_FLAGS="-x bind-license";; esac; \
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The YUM_FLAGS was not requested when running ubuntu

for iter in {1..10}; do \
yum update -y $YUM_FLAGS && \
yum install -y epel-release && \
yum update -y $YUM_FLAGS && \
yum install -y jq && \
yum clean all && \
exit_code=0 && break || exit_code=$? && echo "yum error: retry $iter in 10s" && sleep 10; \

RUN for iter in {1..10}; do \
apt update -y && \
apt install --no-install-recommends --yes jq && \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to add DEBIAN_FRONTEND=noninteractive in front of the apt install command here.

So it should be come:

DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends --yes jq

apt clean all && \
exit_code=0 && break || exit_code=$? && echo "apt error: retry $iter in 10s" && sleep 10; \
done; \
(exit $exit_code)
{{- end }}

## Changes Notes: To migratre from CentOS to Ubuntu, the following changes are needed:
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are all packages migrated from CentOs to Ubuntu related

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this temporarily for discussion or you plane to level this in here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @ruflin, this is for temporary discussion, I'll try to find where I add them to a changelog for future notes. 😸

# atk -> libatk1.0-0
# gtk -> GTK3 is installed by default REMOVED
# gdk -> libgdk-pixbuf2.0-dev
# xrandr -> x11-xserver-utils
# pango -> libpango-1.0-0
# libXcomposite -> libxcomposite-dev
# libXcursor -> libxcursor-dev
# libXdamage -> libxdamage-dev
# libXext -> libxext-dev
# libXi -> libxi-dev
# libXtst -> libxtst-dev
# libXScrnSaver -> libxss-dev
# libXrandr -> libxrandr-dev
# GConf2 -> libgconf2-4
# alsa-lib -> libasound2
# gtk3 -> GTK3 is installed by default REMOVED
# ipa-gothic-fonts -> fonts-ipafont-gothic
# xorg-x11-fonts-100dpi -> xfonts-100dpi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jsoriano @andrewkroh Do you remember what requires the xorg dependencies?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blind guess: abrt-xorg.

The abrt-xorg service collects and processes information about crashes of the X.Org server.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That must be a dependency required by Synthetics.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I missed the part below that it is only included in the "complete" image. Good to know it is not in the standard image.

@andrewvc FYI

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep!

# xorg-x11-fonts-75dpi -> xfonts-75dpi
# xorg-x11-utils -> x11-utils
# xorg-x11-fonts-cyrillic -> xfonts-cyrillic
# xorg-x11-fonts-Type1 -> GET at xfonts-base
# xorg-x11-fonts-misc -> xfonts-base
{{- if (and (contains .image_name "-complete") (not (contains .from "ubi-minimal"))) }}
RUN for iter in {1..10}; do \
yum -y install atk gtk gdk xrandr pango libXcomposite libXcursor libXdamage \
libXext libXi libXtst libXScrnSaver libXrandr GConf2 \
alsa-lib atk gtk3 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils \
xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc \
yum clean all && \
exit_code=0 && break || exit_code=$? && echo "yum error: retry $iter in 10s" && sleep 10; \
RUN apt update -y && \
for iter in {1..10}; do \
apt install --no-install-recommends --yes libatk1.0-0 libgdk-pixbuf2.0-dev x11-xserver-utils libpango-1.0-0 libxcomposite-dev libxcursor-dev libxdamage-dev \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here add the DEBIAN_FRONTEND=noninteractive

libxext-dev libxi-dev libxtst-dev libxss-dev libxrandr-dev gconf2 \
libasound2 fonts-ipafont-gothic xfonts-100dpi xfonts-75dpi xfonts-cyrillic xfonts-scalable xfonts-base x11-utils &&\
apt clean all && \
exit_code=0 && break || exit_code=$? && echo "apt error: retry $iter in 10s" && sleep 10; \
done; \
(exit $exit_code)
ENV NODE_PATH={{ $beatHome }}/.node
Expand Down Expand Up @@ -213,3 +234,4 @@ RUN echo -e '#!/bin/sh\nexec /usr/local/bin/docker-entrypoint' > /app/apm.sh &&
{{- else }}
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/docker-entrypoint"]
{{- end }}