From ae4cd5276ec5208405a90a80ca0eeb94888478b7 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 16 Nov 2022 00:49:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dubuntu=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E6=BA=90error,=E6=8C=87=E5=AE=9A=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E6=BA=90http://old-releases.ubuntu.com/ubuntu/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mysql-5.7.38/dockerfile.2image | 62 ++++++++++++------------ mysql-5.7.38/dockerfile.bin2image.ubuntu | 12 ++--- mysql-5.7.38/install-db.sh | 6 +++ 3 files changed, 41 insertions(+), 39 deletions(-) diff --git a/mysql-5.7.38/dockerfile.2image b/mysql-5.7.38/dockerfile.2image index 5e35edc..ba90c1d 100644 --- a/mysql-5.7.38/dockerfile.2image +++ b/mysql-5.7.38/dockerfile.2image @@ -1,46 +1,44 @@ -FROM mysql-bin:5.7.38-ubuntu - +FROM ubuntu:20.10 as builder +MAINTAINER 1793360097@qq.com # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r mysql && useradd -r -g mysql mysql +COPY install-db.sh /usr/local/bin/ +RUN bash /usr/local/bin/install-db.sh && rm -rf /usr/local/src/* && rm -rf /usr/local/mysql/bin/{mysqltest_embedded,mysql_embedded,mysql_client_test_embedded} /usr/local/mysql/mysql-test +RUN mkdir -p /etc/mysql/conf.d/ && echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf \ + && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql/share /var/run/mysqld \ + && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \ +# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime + && chmod 1777 /var/run/mysqld /var/lib/mysql +FROM ubuntu:20.10 +COPY --from=builder /usr/local/mysql/* /usr/local/mysql +RUN groupadd -r mysql && useradd -r -g mysql mysql && mkdir -p /var/lib/mysql/share /var/run/mysqld /docker-entrypoint-initdb.d && chown mysql:mysql -R /usr/local/mysql /var/lib/mysql /var/run/mysqld /docker-entrypoint-initdb.d -# add gosu for easy step-down from root -# https://github.com/tianon/gosu/releases +ENV MYSQL_MAJOR 5.7 +ENV MYSQL_VERSION 5.7.38-ubuntu20.10 ENV GOSU_VERSION 1.14 RUN set -eux; \ # TODO find a better userspace architecture detection method than querying the kernel - arch="$(uname -m)"; \ - case "$arch" in \ - aarch64) gosuArch='arm64' ;; \ - x86_64) gosuArch='amd64' ;; \ - *) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; \ - esac; \ - curl -fL -o /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch.asc"; \ - curl -fL -o /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch"; \ - export GNUPGHOME="$(mktemp -d)"; \ - gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ - gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ - rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ - chmod +x /usr/local/bin/gosu; \ - gosu --version; \ - gosu nobody true - - -RUN yum install -y wget && mkdir /docker-entrypoint-initdb.d -COPY install-db.sh /usr/local/bin/ -RUN bash /usr/local/bin/install-db.sh -RUN mkdir -p /etc/mysql/conf.d/ && echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf \ - && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \ - && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \ -# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime - && chmod 1777 /var/run/mysqld /var/lib/mysql + arch="$(uname -m)"; \ + case "$arch" in \ + aarch64) gosuArch='arm64' ;; \ + x86_64) gosuArch='amd64' ;; \ + *) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; \ + esac; \ + curl -fL -o /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch.asc"; \ + curl -fL -o /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ + gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ + rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ + chmod +x /usr/local/bin/gosu; \ + gosu --version; \ + gosu nobody true VOLUME /var/lib/mysql -ENV MYSQL_MAJOR 5.7 -ENV MYSQL_VERSION 5.7.40-1debian10 COPY docker-entrypoint.sh /usr/local/bin/ RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat ENTRYPOINT ["docker-entrypoint.sh"] -#CMD ["/bin/bash","-c","sleep 3600"] + EXPOSE 3306 33060 CMD ["mysqld"] diff --git a/mysql-5.7.38/dockerfile.bin2image.ubuntu b/mysql-5.7.38/dockerfile.bin2image.ubuntu index 812d0bb..70d63a1 100644 --- a/mysql-5.7.38/dockerfile.bin2image.ubuntu +++ b/mysql-5.7.38/dockerfile.bin2image.ubuntu @@ -1,13 +1,11 @@ -FROM ubuntu:20.04 +FROM ubuntu:20.10 MAINTAINER 1793360097@qq.com # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added -RUN groupadd -r mysql && useradd -r -g mysql mysql && apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr wget curl && rm -rf /var/lib/apt/lists/* && mkdir /docker-entrypoint-initdb.d - +RUN groupadd -r mysql && useradd -r -g mysql mysql COPY install-db.sh /usr/local/bin/ -RUN bash /usr/local/bin/install-db.sh +RUN bash /usr/local/bin/install-db.sh && rm -rf /usr/local/src/* && rm -rf /usr/local/mysql/bin/{mysqltest_embedded,mysql_embedded,mysql_client_test_embedded} /usr/local/mysql/mysql-test RUN mkdir -p /etc/mysql/conf.d/ && echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf \ - && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \ + && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql/share /var/run/mysqld \ && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \ # ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime - && chmod 1777 /var/run/mysqld /var/lib/mysql \ - && rm -rf /usr/local/src/* + && chmod 1777 /var/run/mysqld /var/lib/mysql diff --git a/mysql-5.7.38/install-db.sh b/mysql-5.7.38/install-db.sh index 91f2ce7..0d4e034 100644 --- a/mysql-5.7.38/install-db.sh +++ b/mysql-5.7.38/install-db.sh @@ -668,6 +668,8 @@ Modify_Source() RHEL_Modify_Source elif [ "${DISTRO}" = "Ubuntu" ]; then Ubuntu_Modify_Source + apt update -y + apt install -y wget elif [ "${DISTRO}" = "CentOS" ]; then CentOS6_Modify_Source CentOS8_Modify_Source @@ -703,6 +705,7 @@ RHEL_Modify_Source() Ubuntu_Modify_Source() { + country='' if [ "${country}" = "CN" ]; then OldReleasesURL='http://mirrors.aliyun.com/oldubuntu-releases/ubuntu/' else @@ -759,6 +762,8 @@ Ubuntu_Modify_Source() CodeName='disco' elif grep -Eqi "19.10" /etc/*-release || echo "${Ubuntu_Version}" | grep -Eqi '^19.10'; then CodeName='eoan' + elif grep -Eqi "20.04" /etc/*-release || echo "${Ubuntu_Version}" | grep -Eqi '^20.04'; then + CodeName='focal' elif grep -Eqi "20.10" /etc/*-release || echo "${Ubuntu_Version}" | grep -Eqi '^20.10'; then CodeName='groovy' elif grep -Eqi "21.04" /etc/*-release || echo "${Ubuntu_Version}" | grep -Eqi '^21.04'; then @@ -945,6 +950,7 @@ Install_Only_Database() { echo "+-----------------------------------------------------------------------+" Get_Dist_Name + Modify_Source Check_DB if [ "${DB_Name}" != "None" ]; then echo "You have install ${DB_Name}!"