如何通过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