如何通过dockerfile安装mysql-server

有谁知道如何通过dockerfile安装mysql-server? 我已经写了一个Dockerfile,但是构build以一个错误结束: / 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 which mysqld在哪个mysqld可执行文件中findmysqld可执行文件。 它可能会有所不同,这取决于您使用的基本图像/发行版。

如果文件位于$PATH ,也可以使用RUN mysqld ...而不使用完整path

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

 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