gpt4 book ai didi

mysql - 如何通过 dockerfile 安装 mysql-server

转载 作者:行者123 更新时间:2023-11-29 02:43:09 26 4
gpt4 key购买 nike

有人知道如何通过 dockerfile 安装 mysql-server 吗?我写了一个 Dockerfile,但是构建以错误结束:/bin/sh: 1:/usr/bin/mysqld: not found

USER root

RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server-5.7

# Remove pre-installed database
RUN rm -rf /var/lib/mysql/*

RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/"/etc/mysql/my.cnf

ENV DB_USER example
ENV DB_PASSWORD example
ENV DB_NAME example
ENV VOLUME_HOME "/var/lib/mysql"

EXPOSE 3306

RUN cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf
RUN /usr/bin/mysqld && sleep 5 && \
mysql -uroot -e "CREATE USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}'" && \
mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO '${DB_USER}'@'%' WITH GRANT OPTION" &&\
mysql -uroot -e "CREATE DATABASE ${DB_NAME}" && \
mysqladmin -uroot shutdown

最佳答案

对于 ubuntu:16.04 基础镜像,mysqld 位于 /usr/sbin 中,而不是 /usr/bin

如果您可以在最终的 RUN 命令之前添加一个步骤 RUN which mysqld,它将向您显示 mysqld 可执行文件的位置。它可能会因您使用的基础镜像/发行版而异。

如果文件在您的 $PATH 中,您也可以在没有完整路径的情况下使用 RUN mysqld ...

您可能还需要如下更新 RUN sed 行,在引用的字符串周围添加空格:

RUN sed -i -e "s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf

否则,您可能会看到以下错误:

The command '/bin/sh -c sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/"/etc/mysql/my.cnf' returned a non-zero code: 1

关于mysql - 如何通过 dockerfile 安装 mysql-server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com