From 06a711b75de1da241a72e611ff05a124d6e22e65 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Mon, 22 Apr 2024 16:03:14 -0600 Subject: [PATCH 01/19] Add mysqlbinlog to the lite image Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 3 ++- docker/lite/Dockerfile.testing | 3 ++- docker/lite/Dockerfile.ubi7 | 3 ++- docker/lite/Dockerfile.ubi8 | 3 ++- docker/lite/Dockerfile.ubi8.arm64 | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index f7e8aba1310..d75a226fd86 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -18,7 +18,7 @@ # Use a temporary layer for the build stage. ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-common" +ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" FROM "${image}" AS builder @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) VOLUME /vt/vtdataroot diff --git a/docker/lite/Dockerfile.testing b/docker/lite/Dockerfile.testing index 2faa5a5a1c8..2a7a6f7b673 100644 --- a/docker/lite/Dockerfile.testing +++ b/docker/lite/Dockerfile.testing @@ -18,7 +18,7 @@ # Use a temporary layer for the build stage. ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-common" +ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" FROM "${image}" AS builder @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) VOLUME /vt/vtdataroot diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index 634242c475e..7bd681e0c57 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -18,7 +18,7 @@ # Use a temporary layer for the build stage. ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-common" +ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" FROM "${image}" AS builder @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses COPY LICENSE /licenses diff --git a/docker/lite/Dockerfile.ubi8 b/docker/lite/Dockerfile.ubi8 index 4c60be11103..a52259e134f 100644 --- a/docker/lite/Dockerfile.ubi8 +++ b/docker/lite/Dockerfile.ubi8 @@ -18,7 +18,7 @@ # Use a temporary layer for the build stage. ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-common" +ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" FROM "${image}" AS builder @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses COPY LICENSE /licenses diff --git a/docker/lite/Dockerfile.ubi8.arm64 b/docker/lite/Dockerfile.ubi8.arm64 index 571bce40f32..759a2db016e 100644 --- a/docker/lite/Dockerfile.ubi8.arm64 +++ b/docker/lite/Dockerfile.ubi8.arm64 @@ -18,7 +18,7 @@ # Use a temporary layer for the build stage. ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-common" +ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" FROM "${image}" AS builder @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses COPY LICENSE /licenses From 7fc8f031ad12fdb41cea988d4fa52b98279ba458 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Mon, 22 Apr 2024 16:22:54 -0600 Subject: [PATCH 02/19] Copy dynamic linker Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index d75a226fd86..75b9f987ead 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) From 6806bf6ba028a75820dc69f93d764178d056192f Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Mon, 22 Apr 2024 16:58:04 -0600 Subject: [PATCH 03/19] Copy linker to testing and ubi7 Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.testing | 1 + docker/lite/Dockerfile.ubi7 | 1 + 2 files changed, 2 insertions(+) diff --git a/docker/lite/Dockerfile.testing b/docker/lite/Dockerfile.testing index 2a7a6f7b673..f17527cb0e9 100644 --- a/docker/lite/Dockerfile.testing +++ b/docker/lite/Dockerfile.testing @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index 7bd681e0c57..a29f91b3eb7 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -51,6 +51,7 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ +COPY --from=builder /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses From b0dafc87cfbc10624e5df31c21ae48798b71f89a Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Mon, 22 Apr 2024 17:33:31 -0600 Subject: [PATCH 04/19] Copy libssl and libcrypto from centos8 Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.ubi7 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index a29f91b3eb7..bc1b600a39a 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -33,6 +33,8 @@ USER vitess RUN make install PREFIX=/vt/install +FROM registry.access.redhat.com/ubi8/ubi:latest as lib + # Start over and build the final image. FROM registry.access.redhat.com/ubi7/ubi:latest @@ -51,8 +53,9 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog +COPY --from=lib /lib64/libssl.so.1.1 /lib64/libssl.so.1.1 +COPY --from=lib /lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.1 RUN mkdir -p /licenses COPY LICENSE /licenses From 54a173af881cc117e2b115019dbf8480316fd409 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Mon, 22 Apr 2024 17:38:05 -0600 Subject: [PATCH 05/19] Remove copies in centos7 Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.ubi7 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index bc1b600a39a..7bd681e0c57 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -33,8 +33,6 @@ USER vitess RUN make install PREFIX=/vt/install -FROM registry.access.redhat.com/ubi8/ubi:latest as lib - # Start over and build the final image. FROM registry.access.redhat.com/ubi7/ubi:latest @@ -54,8 +52,6 @@ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin / COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog -COPY --from=lib /lib64/libssl.so.1.1 /lib64/libssl.so.1.1 -COPY --from=lib /lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.1 RUN mkdir -p /licenses COPY LICENSE /licenses From cf9f0eb04dec40ac3e85774e0fc0267daa33202b Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 09:38:19 -0600 Subject: [PATCH 06/19] Install libraries with apt Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index 75b9f987ead..5e4213f7d5e 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -36,6 +36,8 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM debian:bullseye-slim +RUN apt-get update && apt-get -y install openssl + # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt @@ -45,13 +47,13 @@ ENV VTROOT /vt/src/vitess.io/vitess ENV VTDATAROOT /vt/vtdataroot ENV PATH $VTROOT/bin:$PATH + # Copy artifacts from builder layer. COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) From 202d4f294acc7ba023bcb97a2c9c1b0de87ced50 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 09:43:40 -0600 Subject: [PATCH 07/19] Install only libssl in normal lite image Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index 5e4213f7d5e..b97c104baad 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -36,7 +36,7 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM debian:bullseye-slim -RUN apt-get update && apt-get -y install openssl +RUN apt-get update && apt-get -y install libssl-dev # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess From 2dccf2a660d944ef626e9f215c01365360b67a15 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 09:49:45 -0600 Subject: [PATCH 08/19] Fix debian base lite image Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 3 ++- docker/lite/Dockerfile.testing | 6 ++++-- docker/lite/Dockerfile.ubi7 | 1 - docker/lite/Dockerfile.ubi8 | 1 - docker/lite/Dockerfile.ubi8.arm64 | 1 - 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index b97c104baad..e6c8273de0a 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -36,7 +36,9 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM debian:bullseye-slim +# Install mysqlbinglog RUN apt-get update && apt-get -y install libssl-dev +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess @@ -54,7 +56,6 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) VOLUME /vt/vtdataroot diff --git a/docker/lite/Dockerfile.testing b/docker/lite/Dockerfile.testing index f17527cb0e9..75534462fa8 100644 --- a/docker/lite/Dockerfile.testing +++ b/docker/lite/Dockerfile.testing @@ -36,6 +36,10 @@ RUN make install-testing PREFIX=/vt/install # Start over and build the final image. FROM debian:bullseye-slim +# Install mysqlbinglog +RUN apt-get update && apt-get -y install libssl-dev +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog + # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt @@ -51,8 +55,6 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Create mount point for actual data (e.g. MySQL data dir) VOLUME /vt/vtdataroot diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index 7bd681e0c57..2a61b864dff 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -51,7 +51,6 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses COPY LICENSE /licenses diff --git a/docker/lite/Dockerfile.ubi8 b/docker/lite/Dockerfile.ubi8 index a52259e134f..631e62d3860 100644 --- a/docker/lite/Dockerfile.ubi8 +++ b/docker/lite/Dockerfile.ubi8 @@ -51,7 +51,6 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses COPY LICENSE /licenses diff --git a/docker/lite/Dockerfile.ubi8.arm64 b/docker/lite/Dockerfile.ubi8.arm64 index 759a2db016e..42b898470dc 100644 --- a/docker/lite/Dockerfile.ubi8.arm64 +++ b/docker/lite/Dockerfile.ubi8.arm64 @@ -51,7 +51,6 @@ COPY --from=builder --chown=vitess:vitess /vt/install /vt COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN mkdir -p /licenses COPY LICENSE /licenses From 535e20a429dccd0d93db1a299c6ba57c9fbf1a07 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 09:51:49 -0600 Subject: [PATCH 09/19] Use correct vtroot in lite.testing Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.testing | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile.testing b/docker/lite/Dockerfile.testing index 75534462fa8..0ebd62b799a 100644 --- a/docker/lite/Dockerfile.testing +++ b/docker/lite/Dockerfile.testing @@ -45,7 +45,7 @@ RUN groupadd -r vitess && useradd -r -g vitess vitess RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt # Set up Vitess environment (just enough to run pre-built Go binaries) -ENV VTROOT /vt +ENV VTROOT /vt/src/vitess.io/vitess ENV VTDATAROOT /vt/vtdataroot ENV PATH $VTROOT/bin:$PATH From 821d2fef10588c475fd3360a72d425f8eacfbe56 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 09:58:20 -0600 Subject: [PATCH 10/19] Add mysqlbinlog to ubi8 image Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.ubi8 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/lite/Dockerfile.ubi8 b/docker/lite/Dockerfile.ubi8 index 631e62d3860..b0da67ad3ed 100644 --- a/docker/lite/Dockerfile.ubi8 +++ b/docker/lite/Dockerfile.ubi8 @@ -36,6 +36,9 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM registry.access.redhat.com/ubi8/ubi:latest +# Install mysqlbinglog +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog + # Set up Vitess user and directory tree. RUN groupadd -g 1001 -r vitess && useradd -r -u 1001 -g vitess vitess RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt From ed658a6b0e36e5e1fc169d131f89f06cf3d5c9e8 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 10:05:42 -0600 Subject: [PATCH 11/19] Add mysqlbinlog to ubi7 and install openssl-devel Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.ubi7 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index 2a61b864dff..f77c9da71c8 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -36,6 +36,10 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM registry.access.redhat.com/ubi7/ubi:latest +# Install mysqlbinglog +RUN yum install openssl-devel +COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog + # Set up Vitess user and directory tree. RUN groupadd -g 1001 -r vitess && useradd -r -u 1001 -g vitess vitess RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt From ceb7ba6480d57cb4370533e773874a0d4d49f3ee Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 10:07:12 -0600 Subject: [PATCH 12/19] Fix yum install command Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile.ubi7 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 index f77c9da71c8..e8077eb878f 100644 --- a/docker/lite/Dockerfile.ubi7 +++ b/docker/lite/Dockerfile.ubi7 @@ -37,7 +37,7 @@ RUN make install PREFIX=/vt/install FROM registry.access.redhat.com/ubi7/ubi:latest # Install mysqlbinglog -RUN yum install openssl-devel +RUN yum install -y openssl-devel COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Set up Vitess user and directory tree. From 44731116bb490875b99401c6874c80b24afb1a85 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 13:42:30 -0600 Subject: [PATCH 13/19] Remove ubi7/8 lite images Signed-off-by: Florent Poinsard --- Makefile | 2 +- docker/lite/Dockerfile.ubi7 | 64 ------------------------------- docker/lite/Dockerfile.ubi8 | 64 ------------------------------- docker/lite/Dockerfile.ubi8.arm64 | 61 ----------------------------- 4 files changed, 1 insertion(+), 190 deletions(-) delete mode 100644 docker/lite/Dockerfile.ubi7 delete mode 100644 docker/lite/Dockerfile.ubi8 delete mode 100644 docker/lite/Dockerfile.ubi8.arm64 diff --git a/Makefile b/Makefile index eb7aebadb2d..ff4e2269ee8 100644 --- a/Makefile +++ b/Makefile @@ -321,7 +321,7 @@ endef docker_lite: ${call build_docker_image,docker/lite/Dockerfile,vitess/lite} -DOCKER_LITE_SUFFIX = testing ubi7 ubi8 ubi8.arm64 +DOCKER_LITE_SUFFIX = testing DOCKER_LITE_TARGETS = $(addprefix docker_lite_,$(DOCKER_LITE_SUFFIX)) $(DOCKER_LITE_TARGETS): docker_lite_%: ${call build_docker_image,docker/lite/Dockerfile.$*,vitess/lite:$*} diff --git a/docker/lite/Dockerfile.ubi7 b/docker/lite/Dockerfile.ubi7 deleted file mode 100644 index e8077eb878f..00000000000 --- a/docker/lite/Dockerfile.ubi7 +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# NOTE: We have to build the Vitess binaries from scratch instead of sharing -# a base image because Docker Hub dropped the feature we relied upon to -# ensure images contain the right binaries. - -# Use a temporary layer for the build stage. -ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" - -FROM "${image}" AS builder - -# Allows docker builds to set the BUILD_NUMBER -ARG BUILD_NUMBER - -# Re-copy sources from working tree. -COPY --chown=vitess:vitess . /vt/src/vitess.io/vitess - -# Build and install Vitess in a temporary output directory. -USER vitess - -RUN make install PREFIX=/vt/install - -# Start over and build the final image. -FROM registry.access.redhat.com/ubi7/ubi:latest - -# Install mysqlbinglog -RUN yum install -y openssl-devel -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog - -# Set up Vitess user and directory tree. -RUN groupadd -g 1001 -r vitess && useradd -r -u 1001 -g vitess vitess -RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt - -# Set up Vitess environment (just enough to run pre-built Go binaries) -ENV VTROOT /vt/src/vitess.io/vitess -ENV VTDATAROOT /vt/vtdataroot -ENV PATH $VTROOT/bin:$PATH - -# Copy artifacts from builder layer. -COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=builder --chown=vitess:vitess /vt/install /vt -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ - -RUN mkdir -p /licenses -COPY LICENSE /licenses - -# Create mount point for actual data (e.g. MySQL data dir) -VOLUME /vt/vtdataroot -USER vitess diff --git a/docker/lite/Dockerfile.ubi8 b/docker/lite/Dockerfile.ubi8 deleted file mode 100644 index b0da67ad3ed..00000000000 --- a/docker/lite/Dockerfile.ubi8 +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2022 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# NOTE: We have to build the Vitess binaries from scratch instead of sharing -# a base image because Docker Hub dropped the feature we relied upon to -# ensure images contain the right binaries. - -# Use a temporary layer for the build stage. -ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" - -FROM "${image}" AS builder - -# Allows docker builds to set the BUILD_NUMBER -ARG BUILD_NUMBER - -# Re-copy sources from working tree. -COPY --chown=vitess:vitess . /vt/src/vitess.io/vitess - -# Build and install Vitess in a temporary output directory. -USER vitess - -RUN make install PREFIX=/vt/install - -# Start over and build the final image. -FROM registry.access.redhat.com/ubi8/ubi:latest - -# Install mysqlbinglog -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog - -# Set up Vitess user and directory tree. -RUN groupadd -g 1001 -r vitess && useradd -r -u 1001 -g vitess vitess -RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt - -# Set up Vitess environment (just enough to run pre-built Go binaries) -ENV VTROOT /vt/src/vitess.io/vitess -ENV VTDATAROOT /vt/vtdataroot -ENV PATH $VTROOT/bin:$PATH - -# Copy artifacts from builder layer. -COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=builder --chown=vitess:vitess /vt/install /vt -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ - -RUN mkdir -p /licenses -COPY LICENSE /licenses - -# Create mount point for actual data (e.g. MySQL data dir) -VOLUME /vt/vtdataroot -USER vitess - diff --git a/docker/lite/Dockerfile.ubi8.arm64 b/docker/lite/Dockerfile.ubi8.arm64 deleted file mode 100644 index 42b898470dc..00000000000 --- a/docker/lite/Dockerfile.ubi8.arm64 +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 2022 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# NOTE: We have to build the Vitess binaries from scratch instead of sharing -# a base image because Docker Hub dropped the feature we relied upon to -# ensure images contain the right binaries. - -# Use a temporary layer for the build stage. -ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" - -FROM "${image}" AS builder - -# Allows docker builds to set the BUILD_NUMBER -ARG BUILD_NUMBER - -# Re-copy sources from working tree. -COPY --chown=vitess:vitess . /vt/src/vitess.io/vitess - -# Build and install Vitess in a temporary output directory. -USER vitess - -RUN make cross-install PREFIX=/vt/install GOOS=linux GOARCH=arm64 - -# Start over and build the final image. -FROM registry.access.redhat.com/ubi8/ubi:latest - -# Set up Vitess user and directory tree. -RUN groupadd -g 1001 -r vitess && useradd -r -u 1001 -g vitess vitess -RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt - -# Set up Vitess environment (just enough to run pre-built Go binaries) -ENV VTROOT /vt/src/vitess.io/vitess -ENV VTDATAROOT /vt/vtdataroot -ENV PATH $VTROOT/bin:$PATH - -# Copy artifacts from builder layer. -COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=builder --chown=vitess:vitess /vt/install /vt -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ - -RUN mkdir -p /licenses -COPY LICENSE /licenses - -# Create mount point for actual data (e.g. MySQL data dir) -VOLUME /vt/vtdataroot -USER vitess - From 31fecd6c2661e91160f8dd6232ff6d742459907f Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 13:47:08 -0600 Subject: [PATCH 14/19] Remove unrequired new line Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index e6c8273de0a..4e812ad1a08 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -49,7 +49,6 @@ ENV VTROOT /vt/src/vitess.io/vitess ENV VTDATAROOT /vt/vtdataroot ENV PATH $VTROOT/bin:$PATH - # Copy artifacts from builder layer. COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --from=builder --chown=vitess:vitess /vt/install /vt From e69863cf0e6863778408bd47ae9ae4da48c3ad86 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 13:57:18 -0600 Subject: [PATCH 15/19] Copy xtrabackup from builder to final image Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index 4e812ad1a08..f4a92b8098a 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -36,9 +36,10 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM debian:bullseye-slim -# Install mysqlbinglog +# Install mysqlbinglog and xtrabackup RUN apt-get update && apt-get -y install libssl-dev COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog +COPY --from=builder /usr/bin/xtrabackup /usr/bin/xtrabackup # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess From 6bea2ede3755953f1b2f1adb376d397f365cf0ee Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 15:33:37 -0600 Subject: [PATCH 16/19] Download xtrabackup from repo Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index f4a92b8098a..828447291a6 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -36,10 +36,15 @@ RUN make install PREFIX=/vt/install # Start over and build the final image. FROM debian:bullseye-slim -# Install mysqlbinglog and xtrabackup -RUN apt-get update && apt-get -y install libssl-dev +# Install mysqlbinglog +RUN apt-get update && apt-get -y install libssl-dev gnupg COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog -COPY --from=builder /usr/bin/xtrabackup /usr/bin/xtrabackup + +# Install xtrabackup +RUN apt-key adv --no-tty --keyserver keyserver.ubuntu.com --recv-keys 9334A25F8507EFA5 +RUN echo 'deb http://repo.percona.com/apt bullseye main' > /etc/apt/sources.list.d/percona.list +RUN apt-get update -y +RUN apt-get install percona-xtrabackup-80 # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess From 2a3007c780de007e0eb8ec80561e7819c4e639d2 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 15:35:38 -0600 Subject: [PATCH 17/19] Auto yes when doing apt-get install Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index 828447291a6..ef89bb5ba47 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -44,7 +44,7 @@ COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog RUN apt-key adv --no-tty --keyserver keyserver.ubuntu.com --recv-keys 9334A25F8507EFA5 RUN echo 'deb http://repo.percona.com/apt bullseye main' > /etc/apt/sources.list.d/percona.list RUN apt-get update -y -RUN apt-get install percona-xtrabackup-80 +RUN apt-get install -y percona-xtrabackup-80 # Set up Vitess user and directory tree. RUN groupadd -r vitess && useradd -r -g vitess vitess From 493159385458d7649d697982e26a60af050b3632 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Tue, 23 Apr 2024 15:45:49 -0600 Subject: [PATCH 18/19] Remove the lite.testing image and simplify makefile Signed-off-by: Florent Poinsard --- Makefile | 10 ++---- docker/lite/Dockerfile.testing | 61 ---------------------------------- 2 files changed, 2 insertions(+), 69 deletions(-) delete mode 100644 docker/lite/Dockerfile.testing diff --git a/Makefile b/Makefile index ff4e2269ee8..788a492942f 100644 --- a/Makefile +++ b/Makefile @@ -321,15 +321,9 @@ endef docker_lite: ${call build_docker_image,docker/lite/Dockerfile,vitess/lite} -DOCKER_LITE_SUFFIX = testing -DOCKER_LITE_TARGETS = $(addprefix docker_lite_,$(DOCKER_LITE_SUFFIX)) -$(DOCKER_LITE_TARGETS): docker_lite_%: - ${call build_docker_image,docker/lite/Dockerfile.$*,vitess/lite:$*} - docker_lite_push: - for i in $(DOCKER_LITE_SUFFIX); do echo "pushing lite image: $$i"; docker push vitess/lite:$$i || exit 1; done - -docker_lite_all: docker_lite $(DOCKER_LITE_TARGETS) + echo "pushing lite image: latest" + docker push vitess/lite:latest docker_local: ${call build_docker_image,docker/local/Dockerfile,vitess/local} diff --git a/docker/lite/Dockerfile.testing b/docker/lite/Dockerfile.testing deleted file mode 100644 index 0ebd62b799a..00000000000 --- a/docker/lite/Dockerfile.testing +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 2019 The Vitess Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# NOTE: We have to build the Vitess binaries from scratch instead of sharing -# a base image because Docker Hub dropped the feature we relied upon to -# ensure images contain the right binaries. - -# Use a temporary layer for the build stage. -ARG bootstrap_version=31 -ARG image="vitess/bootstrap:${bootstrap_version}-mysql80" - -FROM "${image}" AS builder - -# Allows docker builds to set the BUILD_NUMBER -ARG BUILD_NUMBER - -# Re-copy sources from working tree. -COPY --chown=vitess:vitess . /vt/src/vitess.io/vitess - -# Build and install Vitess in a temporary output directory. -USER vitess - -RUN make install-testing PREFIX=/vt/install - -# Start over and build the final image. -FROM debian:bullseye-slim - -# Install mysqlbinglog -RUN apt-get update && apt-get -y install libssl-dev -COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog - -# Set up Vitess user and directory tree. -RUN groupadd -r vitess && useradd -r -g vitess vitess -RUN mkdir -p /vt/vtdataroot && chown -R vitess:vitess /vt - -# Set up Vitess environment (just enough to run pre-built Go binaries) -ENV VTROOT /vt/src/vitess.io/vitess -ENV VTDATAROOT /vt/vtdataroot -ENV PATH $VTROOT/bin:$PATH - -# Copy artifacts from builder layer. -COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -COPY --from=builder --chown=vitess:vitess /vt/install /vt -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/web/vtadmin /vt/web/vtadmin -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/init_db.sql /vt/config/ -COPY --from=builder --chown=vitess:vitess /vt/src/vitess.io/vitess/config/mycnf /vt/config/ - -# Create mount point for actual data (e.g. MySQL data dir) -VOLUME /vt/vtdataroot -USER vitess From d896a3b941043f95ab25494fdcaa1cfe1947a434 Mon Sep 17 00:00:00 2001 From: Florent Poinsard Date: Wed, 24 Apr 2024 09:00:23 -0600 Subject: [PATCH 19/19] Download libssl1.1 instead of libssl-devel Signed-off-by: Florent Poinsard --- docker/lite/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/lite/Dockerfile b/docker/lite/Dockerfile index ef89bb5ba47..ccbff94f225 100644 --- a/docker/lite/Dockerfile +++ b/docker/lite/Dockerfile @@ -37,7 +37,7 @@ RUN make install PREFIX=/vt/install FROM debian:bullseye-slim # Install mysqlbinglog -RUN apt-get update && apt-get -y install libssl-dev gnupg +RUN apt-get update && apt-get -y install libssl1.1 gnupg COPY --from=builder /usr/bin/mysqlbinlog /usr/bin/mysqlbinlog # Install xtrabackup