Skip to content

Commit 9d503a3

Browse files
committed
*: add Optimise about parameters and scripts
1 parent 3a45bf1 commit 9d503a3

16 files changed

+362
-121
lines changed

Dockerfile.sidecar renamed to Dockerfile57.sidecar

+20-19
Original file line numberDiff line numberDiff line change
@@ -37,28 +37,29 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -a -o bin/my
3737
###############################################################################
3838
# Docker image for Sidecar
3939
###############################################################################
40-
FROM ubuntu:focal
40+
# FROM ubuntu:focal
4141

42-
RUN set -ex; \
43-
groupadd --gid 1001 --system mysql; \
44-
useradd \
45-
--uid 1001 \
46-
--system \
47-
--home-dir /var/lib/mysql \
48-
--no-create-home \
49-
--gid mysql \
50-
mysql;
42+
# RUN set -ex; \
43+
# groupadd --gid 1001 --system mysql; \
44+
# useradd \
45+
# --uid 1001 \
46+
# --system \
47+
# --home-dir /var/lib/mysql \
48+
# --no-create-home \
49+
# --gid mysql \
50+
# mysql;
5151

52-
ARG XTRABACKUP_PKG=percona-xtrabackup-24
53-
RUN set -ex; \
54-
apt-get update; \
55-
apt-get install -y --no-install-recommends gnupg2 wget lsb-release curl bc openssh-server sshpass;\
56-
wget -P /tmp --no-check-certificate https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; \
57-
dpkg -i /tmp/percona-release_latest.$(lsb_release -sc)_all.deb; \
58-
apt-get update; \
59-
apt-get install -y --no-install-recommends ${XTRABACKUP_PKG} mysql-client jq; \
60-
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
52+
# ARG XTRABACKUP_PKG=percona-xtrabackup-24
53+
# RUN set -ex; \
54+
# apt-get update; \
55+
# apt-get install -y --no-install-recommends gnupg2 wget lsb-release curl bc openssh-server sshpass;\
56+
# wget -P /tmp --no-check-certificate https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; \
57+
# dpkg -i /tmp/percona-release_latest.$(lsb_release -sc)_all.deb; \
58+
# apt-get update; \
59+
# apt-get install -y --no-install-recommends ${XTRABACKUP_PKG} mysql-client jq; \
60+
# rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
6161

62+
FROM radondb/mysql57-sidecar:v2.4.0
6263
WORKDIR /
6364
COPY --from=builder /workspace/bin/sidecar /usr/local/bin/sidecar
6465
COPY --from=builder /workspace/bin/mysqlchecker /mnt/mysqlchecker

Dockerfile.sidecar-arm64 renamed to Dockerfile57.sidecar-arm64

+43-40
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ WORKDIR /workspace
99
# Copy the Go Modules manifests
1010
COPY go.mod go.mod
1111
COPY go.sum go.sum
12-
12+
ARG GO_PROXY=off
1313
# cache deps before building and copying source so that we don't need to re-download as much
1414
# and so that source changes don't invalidate our downloaded layer
1515
# RUN if [ $(date +%z) = "+0800" ] ; then go env -w GOPROXY=https://goproxy.cn,direct; fi
16-
# RUN go env -w GOPROXY=https://goproxy.cn,direct
17-
# go mod download
16+
RUN echo "GO_PROXY argument is: ${GO_PROXY}"
17+
RUN if [ "$GO_PROXY" = "on" ]; then \
18+
go env -w GOPROXY=https://goproxy.cn,direct; \
19+
fi
1820
RUN go mod download
1921

2022
# Copy the go source
@@ -38,48 +40,49 @@ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -a -o bin/mysqlchecker c
3840
###############################################################################
3941
# Docker image for Sidecar
4042
###############################################################################
41-
FROM oraclelinux:8-slim
43+
# FROM oraclelinux:8-slim
4244

43-
LABEL org.opencontainers.image.authors="[email protected]"
44-
RUN set -ex; \
45-
groupadd --gid 1001 --system mysql; \
46-
useradd \
47-
--uid 1001 \
48-
--system \
49-
--home-dir /var/lib/mysql \
50-
--no-create-home \
51-
--gid mysql \
52-
mysql;
45+
# LABEL org.opencontainers.image.authors="[email protected]"
46+
# RUN set -ex; \
47+
# groupadd --gid 1001 --system mysql; \
48+
# useradd \
49+
# --uid 1001 \
50+
# --system \
51+
# --home-dir /var/lib/mysql \
52+
# --no-create-home \
53+
# --gid mysql \
54+
# mysql;
5355

54-
RUN microdnf -y update; \
55-
microdnf -y install glibc-langpack-en
56+
# RUN microdnf -y update; \
57+
# microdnf -y install glibc-langpack-en
5658

57-
ARG XTRABACKUP_PKG=percona-xtrabackup-24
59+
# ARG XTRABACKUP_PKG=percona-xtrabackup-24
5860

59-
# check repository package signature in secure way
60-
#percona-xtrabackup-24-2.4.26
61-
#percona-xtrabackup-test-80-8.0.28
62-
RUN set -ex; \
63-
{ \
64-
echo '[mysql-server-minimal]'; \
65-
echo 'name=MySQL Server Minimal'; \
66-
echo 'enabled=1'; \
67-
echo 'baseurl=http://139.198.40.93:801' ;\
68-
echo 'gpgcheck=0'; \
69-
echo 'module_hotfixes=true' ;\
70-
} | tee /etc/yum.repos.d/mysql-community-minimal.repo
61+
# # check repository package signature in secure way
62+
# #percona-xtrabackup-24-2.4.26
63+
# #percona-xtrabackup-test-80-8.0.28
64+
# RUN set -ex; \
65+
# { \
66+
# echo '[mysql-server-minimal]'; \
67+
# echo 'name=MySQL Server Minimal'; \
68+
# echo 'enabled=1'; \
69+
# echo 'baseurl=http://139.198.40.93:801' ;\
70+
# echo 'gpgcheck=0'; \
71+
# echo 'module_hotfixes=true' ;\
72+
# } | tee /etc/yum.repos.d/mysql-community-minimal.repo
7173

72-
RUN set -ex; \
73-
#dnf --setopt=install_weak_deps=False install -y \
74-
microdnf -y install \
75-
${XTRABACKUP_PKG} \
76-
libev \
77-
curl \
78-
gnutls \
79-
wget;
80-
RUN microdnf --enablerepo='*' update; \
81-
microdnf clean all; \
82-
rm -rf /var/cache/dnf /var/cache/yum;
74+
# RUN set -ex; \
75+
# #dnf --setopt=install_weak_deps=False install -y \
76+
# microdnf -y install \
77+
# ${XTRABACKUP_PKG} \
78+
# libev \
79+
# curl \
80+
# gnutls \
81+
# wget;
82+
# RUN microdnf --enablerepo='*' update; \
83+
# microdnf clean all; \
84+
# rm -rf /var/cache/dnf /var/cache/yum;
85+
from radondb/mysql57-sidecar:v2.4.0
8386
WORKDIR /
8487
COPY --from=builder /workspace/bin/sidecar /usr/local/bin/sidecar
8588
COPY --from=builder /workspace/bin/mysqlchecker /mnt/mysqlchecker

Dockerfile80.sidecar

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
##############################################################################
2+
# Build Sidecar
3+
###############################################################################
4+
# Build the manager binary
5+
FROM golang:1.17.13 as builder
6+
7+
WORKDIR /workspace
8+
# Copy the Go Modules manifests
9+
COPY go.mod go.mod
10+
COPY go.sum go.sum
11+
ARG GO_PROXY=off
12+
RUN if [ "$GO_PROXY" = "on" ]; then \
13+
go env -w GOPROXY=https://goproxy.cn,direct; \
14+
fi
15+
# cache deps before building and copying source so that we don't need to re-download as much
16+
# and so that source changes don't invalidate our downloaded layer
17+
# go mod download
18+
RUN go mod download
19+
20+
# Copy the go source
21+
COPY cmd/sidecar/main.go cmd/sidecar/main.go
22+
COPY sidecar/ sidecar/
23+
COPY utils/ utils/
24+
25+
# Build
26+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -a -o bin/sidecar cmd/sidecar/main.go
27+
28+
# Build mysql checker for mysql conatiner
29+
COPY cmd/s3cmd/main.go cmd/s3cmd/main.go
30+
COPY cmd/s3cmd/s3upload.go cmd/s3cmd/s3upload.go
31+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -a -o bin/s3upload cmd/s3cmd/main.go cmd/s3cmd/s3upload.go
32+
33+
# Build mysql checker for mysql conatiner
34+
COPY cmd/mysql/main.go cmd/mysql/main.go
35+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -a -o bin/mysqlchecker cmd/mysql/main.go
36+
37+
###############################################################################
38+
# Docker image for Sidecar
39+
###############################################################################
40+
# FROM ubuntu:focal
41+
42+
# RUN set -ex; \
43+
# groupadd --gid 1001 --system mysql; \
44+
# useradd \
45+
# --uid 1001 \
46+
# --system \
47+
# --home-dir /var/lib/mysql \
48+
# --no-create-home \
49+
# --gid mysql \
50+
# mysql;
51+
52+
# ARG XTRABACKUP_PKG=percona-xtrabackup-24
53+
# RUN set -ex; \
54+
# apt-get update; \
55+
# apt-get install -y --no-install-recommends gnupg2 wget lsb-release curl bc openssh-server sshpass;\
56+
# wget -P /tmp --no-check-certificate https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; \
57+
# dpkg -i /tmp/percona-release_latest.$(lsb_release -sc)_all.deb; \
58+
# apt-get update; \
59+
# apt-get install -y --no-install-recommends ${XTRABACKUP_PKG} mysql-client jq; \
60+
# rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
61+
62+
FROM radondb/mysql80-sidecar:v2.4.0
63+
WORKDIR /
64+
COPY --from=builder /workspace/bin/sidecar /usr/local/bin/sidecar
65+
COPY --from=builder /workspace/bin/mysqlchecker /mnt/mysqlchecker
66+
COPY --from=builder /workspace/bin/s3upload /mnt/s3upload
67+
ENTRYPOINT ["sidecar"]

Dockerfile80.sidecar-arm64

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
2+
##############################################################################
3+
# Build Sidecar
4+
###############################################################################
5+
# Build the manager binary
6+
FROM golang:1.17.13 as builder
7+
8+
WORKDIR /workspace
9+
# Copy the Go Modules manifests
10+
COPY go.mod go.mod
11+
COPY go.sum go.sum
12+
ARG GO_PROXY=off
13+
# cache deps before building and copying source so that we don't need to re-download as much
14+
# and so that source changes don't invalidate our downloaded layer
15+
# RUN if [ $(date +%z) = "+0800" ] ; then go env -w GOPROXY=https://goproxy.cn,direct; fi
16+
RUN echo "GO_PROXY argument is: ${GO_PROXY}"
17+
RUN if [ "$GO_PROXY" = "on" ]; then \
18+
go env -w GOPROXY=https://goproxy.cn,direct; \
19+
fi
20+
RUN go mod download
21+
22+
# Copy the go source
23+
COPY cmd/sidecar/main.go cmd/sidecar/main.go
24+
COPY sidecar/ sidecar/
25+
COPY utils/ utils/
26+
27+
# Build
28+
RUN CGO_ENABLED=0 GOOS=linux go build -a -o bin/sidecar cmd/sidecar/main.go
29+
30+
31+
# Build mysql checker for mysql conatiner
32+
COPY cmd/s3cmd/main.go cmd/s3cmd/main.go
33+
COPY cmd/s3cmd/s3upload.go cmd/s3cmd/s3upload.go
34+
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -a -o bin/s3upload cmd/s3cmd/main.go cmd/s3cmd/s3upload.go
35+
36+
# Build mysql checker for mysql conatiner
37+
COPY cmd/mysql/main.go cmd/mysql/main.go
38+
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -a -o bin/mysqlchecker cmd/mysql/main.go
39+
40+
###############################################################################
41+
# Docker image for Sidecar
42+
###############################################################################
43+
# FROM oraclelinux:8-slim
44+
45+
# LABEL org.opencontainers.image.authors="[email protected]"
46+
# RUN set -ex; \
47+
# groupadd --gid 1001 --system mysql; \
48+
# useradd \
49+
# --uid 1001 \
50+
# --system \
51+
# --home-dir /var/lib/mysql \
52+
# --no-create-home \
53+
# --gid mysql \
54+
# mysql;
55+
56+
# RUN microdnf -y update; \
57+
# microdnf -y install glibc-langpack-en
58+
59+
# ARG XTRABACKUP_PKG=percona-xtrabackup-24
60+
61+
# # check repository package signature in secure way
62+
# #percona-xtrabackup-24-2.4.26
63+
# #percona-xtrabackup-test-80-8.0.28
64+
# RUN set -ex; \
65+
# { \
66+
# echo '[mysql-server-minimal]'; \
67+
# echo 'name=MySQL Server Minimal'; \
68+
# echo 'enabled=1'; \
69+
# echo 'baseurl=http://139.198.40.93:801' ;\
70+
# echo 'gpgcheck=0'; \
71+
# echo 'module_hotfixes=true' ;\
72+
# } | tee /etc/yum.repos.d/mysql-community-minimal.repo
73+
74+
# RUN set -ex; \
75+
# #dnf --setopt=install_weak_deps=False install -y \
76+
# microdnf -y install \
77+
# ${XTRABACKUP_PKG} \
78+
# libev \
79+
# curl \
80+
# gnutls \
81+
# wget;
82+
# RUN microdnf --enablerepo='*' update; \
83+
# microdnf clean all; \
84+
# rm -rf /var/cache/dnf /var/cache/yum;
85+
from radondb/mysql80-sidecar:v2.4.0
86+
WORKDIR /
87+
COPY --from=builder /workspace/bin/sidecar /usr/local/bin/sidecar
88+
COPY --from=builder /workspace/bin/mysqlchecker /mnt/mysqlchecker
89+
COPY --from=builder /workspace/bin/s3upload /mnt/s3upload
90+
ENTRYPOINT ["sidecar"]

Makefile

+6-5
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,12 @@ run: manifests generate fmt vet ## Run a controller from your host.
9797
go run ./cmd/manager/main.go
9898

9999
docker-build: test ## Build docker image with the manager.
100-
DOCKER_BUILDKIT=1 docker build --build-arg GO_PROXY=${GO_PROXY} -t ${IMG} .
101-
DOCKER_BUILDKIT=1 docker build -f Dockerfile.sidecar --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR57_IMG} .
102-
DOCKER_BUILDKIT=1 docker build -f Dockerfile.sidecar --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR80_IMG} .
103-
DOCKER_BUILDKIT=1 docker build -f build/xenon/Dockerfile --build-arg GO_PROXY=${GO_PROXY} -t ${XENON_IMG} .
104-
DOCKER_BUILDKIT=1 docker build --build-arg XTRABACKUP_PKG=percona-xtrabackup-80 --build-arg GO_PROXY=${GO_PROXY} -f Dockerfile.sidecar -t ${SIDECAR80_IMG} .
100+
# DOCKER_BUILDKIT=1 docker build --build-arg GO_PROXY=${GO_PROXY} -t ${IMG} .
101+
# DOCKER_BUILDKIT=1 docker build -f Dockerfile.sidecar --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR57_IMG} .
102+
# DOCKER_BUILDKIT=1 docker build -f Dockerfile.sidecar --build-arg IMAGE_FROM="radondb/mysql80-sidecar:v2.4.0" --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR80_IMG} .
103+
# DOCKER_BUILDKIT=1 docker build -f build/xenon/Dockerfile --build-arg GO_PROXY=${GO_PROXY} -t ${XENON_IMG} .
104+
# DOCKER_BUILDKIT=1 docker build --build-arg XTRABACKUP_PKG=percona-xtrabackup-80 --build-arg GO_PROXY=${GO_PROXY} -f Dockerfile.sidecar -t ${SIDECAR80_IMG} .
105+
bash ./build_mutiplatform.sh
105106
docker-push: ## Push docker image with the manager.
106107
docker push ${IMG}
107108
docker push ${SIDECAR57_IMG}

build_mutiplatform.sh

+12-9
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,25 @@
33
TAG=v3.0.0
44
IMGPREFIX=radondb/
55
builder_exists=$(docker buildx ls | awk '{if ($1=="multi-platform") print $1}')
6+
# docker buildx rm multi-platform
7+
# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
68
if [ "$builder_exists" ]; then
7-
docker buildx rm multi-platform
8-
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
9+
echo "exist the multiarch"
10+
else
11+
docker buildx create --use --name multi-platform --platform=linux/amd64,linux/arm64 > /dev/null
912
fi
10-
docker buildx create --use --name multi-platform --platform=linux/amd64,linux/arm64 > /dev/null
13+
1114

1215
IMGAMD=${IMGPREFIX}mysql-operator-amd64:${TAG}
1316
IMGARM=${IMGPREFIX}mysql-operator-arm64:${TAG}
1417
GO_PROXY=on
1518
DOCKER_BUILDKIT=1 docker build --build-arg GO_PROXY=${GO_PROXY} -t ${IMGAMD} .
1619

17-
docker buildx create --use --name multi-platform --driver docker-container --platform=linux/amd64,linux/arm64 --config /root/radondb-mysql-kubernetes/buildkitd.toml > /dev/null
20+
#docker buildx create --use --name multi-platform --driver docker-container --platform=linux/amd64,linux/arm64 --config /root/radondb-mysql-kubernetes/buildkitd.toml > /dev/null
1821
docker buildx build --build-arg GO_PROXY=on --platform linux/arm64 -t $IMGARM -o type=docker .
1922
docker push ${IMGAMD}
2023
docker push ${IMGARM}
21-
docker manifest create ${IMGPREFIX}mysql-operator:${TAG} ${IMGAMD} ${IMGARM}
24+
docker manifest create --amend ${IMGPREFIX}mysql-operator:${TAG} ${IMGAMD} ${IMGARM}
2225
docker manifest push --purge ${IMGPREFIX}mysql-operator:${TAG}
2326

2427

@@ -42,10 +45,10 @@ SIDECAR80_IMGAMD=${IMGPREFIX}mysql80-sidecar-amd64:${TAG}
4245
SIDECAR57_IMGARM=${IMGPREFIX}mysql57-sidecar-arm64:${TAG}
4346
SIDECAR80_IMGARM=${IMGPREFIX}mysql80-sidecar-arm64:${TAG}
4447
GO_PROXY=on
45-
DOCKER_BUILDKIT=1 docker build --build-arg XTRABACKUP_PKG=percona-xtrabackup-80 --build-arg GO_PROXY=${GO_PROXY} -f Dockerfile.sidecar -t ${SIDECAR80_IMGAMD} .
46-
DOCKER_BUILDKIT=1 docker build -f Dockerfile.sidecar --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR57_IMGAMD} .
47-
docker buildx build --build-arg GO_PROXY=on --platform linux/arm64 --build-arg XTRABACKUP_PKG=percona-xtrabackup-80 --build-arg GO_PROXY=${GO_PROXY} -f Dockerfile.sidecar-arm64 -t ${SIDECAR80_IMGARM} -o type=docker .
48-
docker buildx build --build-arg GO_PROXY=on --platform linux/arm64 -f Dockerfile.sidecar2 --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR57_IMGARM} -o type=docker .
48+
DOCKER_BUILDKIT=1 docker build --build-arg IMAGE_FROM=radondb/mysql80-sidecar:v2.4.0 --build-arg GO_PROXY=${GO_PROXY} -f Dockerfile80.sidecar -t ${SIDECAR80_IMGAMD} .
49+
DOCKER_BUILDKIT=1 docker build -f Dockerfile57.sidecar --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR57_IMGAMD} .
50+
docker buildx build --build-arg GO_PROXY=on --platform linux/arm64 --build-arg GO_PROXY=${GO_PROXY} -f Dockerfile80.sidecar-arm64 -t ${SIDECAR80_IMGARM} -o type=docker .
51+
docker buildx build --build-arg GO_PROXY=on --platform linux/arm64 -f Dockerfile57.sidecar-arm64 --build-arg GO_PROXY=${GO_PROXY} -t ${SIDECAR57_IMGARM} -o type=docker .
4952
docker push ${SIDECAR57_IMGAMD}
5053
docker push ${SIDECAR80_IMGAMD}
5154
docker push ${SIDECAR57_IMGARM}

controllers/backup/backup_controller.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ func (r *BackupReconciler) generateBackupJobSpec(backup *v1beta1.Backup, cluster
455455
// If backup.Spec.BackupOpts.NFS is not nil then use ENV BACKUP_TYPE=nfs and mount the nfs volume
456456

457457
backupHost := GetBackupHost(cluster)
458-
backupImage := cluster.Spec.Backup.Image
458+
backupImage := mysqlcluster.GetImage(cluster.Spec.Backup.Image)
459459
serviceAccountName := backup.Spec.ClusterName
460460
clusterAuthsctName := fmt.Sprintf("%s-secret", cluster.GetName())
461461
var S3BackuptEnv []corev1.EnvVar
@@ -734,7 +734,7 @@ func (r *BackupReconciler) genBinlogJobTemplate(backup *v1beta1.Backup, cluster
734734
InitContainers: []corev1.Container{
735735
{
736736
Name: "initial",
737-
Image: cluster.Spec.Backup.Image,
737+
Image: mysqlcluster.GetImage(cluster.Spec.Backup.Image),
738738
ImagePullPolicy: cluster.Spec.ImagePullPolicy,
739739
Command: []string{
740740
"bash", "-c", "cp /mnt/s3upload /opt/radondb; chown -R 1001.1001 /opt/radondb",

0 commit comments

Comments
 (0)