Docker容器内的MySQL服务无法在macOS Sierra 10.12.6中运行

时间:2017-08-21 18:50:40

标签: mysql macos docker docker-container

我被迫重新安装macOS Sierra,因为我参加了High Sierra的测试计划,我遇到了严重的崩溃,所以我降级了系统。

这个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)。这个问题的解决方法是什么?

1 个答案:

答案 0 :(得分:0)

您应该使用官方MySQL Dockerfile作为起点。您可以直接使用MySQL映像本身FROM mysql:5.7作为Dockerfile,也可以将Docker文件和docker-entrypoint复制到their Github到#34;控制&#34; MySQL映像,并且不依赖于MySQL发布/更改。

我认为对所有Docker容器使用相同的操作系统基础是一个好主意,你当前正在使用Ubuntu发行版,如果你不介意或刚刚开始,你可能想让Debian成为你的操作系统基础。我说这是因为到目前为止我看过的Docker图像,Cloudbee的Jenkins,.NET Core,ASP.NET COre和MySQL都有Debian基础所以我一直认为Debian是Docker图像最受欢迎的操作系统基础我显然只有这方面的轶事证据。

我的公司更喜欢CentOS发行版,所以我采用了官方的MySQL Dockerfile和converted to work with CentOS:7,这很痛苦。