Docker容器中的MySQL服务不能在macOS Sierra 10.12.6中运行

我被迫重新安装了macOS Sierra,因为我在高级Sierra的testing版程序中,我发生严重的崩溃,所以我降级了系统。

这个Dockerfile在系统突然崩溃之前正在High Sierra工作。

FROM ubuntu:16.04 MAINTAINER XXX version 0.0.1 # Prepare Debian environment ENV DEBIAN_FRONTEND noninteractive # we don't need an apt cache in a container RUN echo "Acquire::http {No-Cache=True;};" > /etc/apt/apt.conf.d/no-cache # ---------------------------- # Configure supervisor # ---------------------------- RUN apt-get update > /dev/null 2>&1 && apt-get install -y supervisor > /dev/null 2>&1 RUN mkdir -p /var/log/supervisor COPY files/supervisord.conf /etc/supervisor/conf.d/supervisord.conf ## Mysql RUN apt-get install -y mysql-client > /dev/null 2>&1 #RUN debconf-set-selections <<< 'mysql-server mysql-server/root_password password 1234' #RUN debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password 1234' RUN echo 'mysql-server mysql-server/root_password password 1234' | debconf-set-selections RUN echo 'mysql-server mysql-server/root_password_again password 1234' | debconf-set-selections RUN apt-get -y install mysql-server > /dev/null 2>&1 RUN sed -i -e 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mysql.conf.d/mysqld.cnf RUN echo "sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN usermod -d /var/lib/mysql/ mysql mys ADD files/xxx.dump /tmp/xxx.dump ADD files/mysql_xxx.sql /tmp/mysql_xxx.sql RUN service mysql start && \ mysql -uroot -p1234 < /tmp/mysql_xxx.sql RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN apt-get clean EXPOSE 3306 CMD ["/usr/bin/supervisord"] 

现在,重新安装所有我不工作的东西,它总是输出相同的错误:

Starting MySQL database server mysqld ...fail!

要添加一些信息,在Dockerfile停止的步骤中,我启动服务来转储数据库。

我的系统版本macOS Sierra 10.12.6(16G29)和我的Docker版本是17.06.0-ce-mac19(18663)。 任何解决这个问题的解决方法?

你应该使用官方的MySQL Dockerfile作为你的出发点。 您可以使用MySQL映像本身, FROM mysql:5.7您的Dockerfile的FROM mysql:5.7 ;或者你可以复制Dockerfile和docker-entrypoint,sh从他们的Github到“控制”MySQL映像,而不是对MySQL发布有任何依赖/变化。

我认为为所有Docker容器使用相同的操作系统基础是一个好主意,您目前正在使用Ubuntu发行版,如果您不介意或刚刚开始,您可能希望将Debian作为您的操作系统基础。 我之所以这样说,是因为我目前看到的Docker镜像,Cloudbee的Jenkins,.NET Core,ASP.NET COre和MySQL都具有Debian基础,因此我一直认为Debian是Docker映像最受欢迎的OS基础,尽pipe我只有轶事这显然是证据。

我的公司更喜欢CentOS发行版,所以我拿了官方的MySQL Dockerfile,并转换成与CentOS:7一起工作 ,这是一个痛苦。