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

标签 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"]

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

启动 MySQL 数据库服务器 mysqld ...失败!

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

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

最佳答案

您应该使用官方 MySQL Dockerfile 作为起点。您可以仅使用 MySQL 镜像本身,FROM mysql:5.7 作为您的 Dockerfile,也可以从 their Github 复制 Dockerfile 和 docker-entrypoint,sh “控制”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 ,这是一个痛苦。

关于Docker 容器内的 MySQL 服务无法在 macOS Sierra 10.12.6 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803843/

相关文章:

java - IntelliJ mac JRE 主页

Docker Swarm 初始化失败 : Address already in use

javascript - 从 Docker 内部调试 Node.js 应用程序

python - 这么多 python ,我需要哪个?

docker - RPC 错误 : code = Unknown desc = failed to build LLB

php - Kohana3框架中表的列名作为变量

php - 查找特定半径内的邮政编码

java - 如何通过JDBC返回MySQL插入行的自增BIGINT键?

php - 尝试根据用户输入使用 ajax 和 php 在两个日期之间加载数据

macos - Jekyll的安装在OSX上是否需要GCC?