Docker中的MySQL冻结在root密码configuration中

我有下一个dockerfile:

FROM ubuntu:16.04 RUN apt-get update && apt-get upgrade -y && apt-get install -y apache2 mysql-server mysql-client 

之后,Docker构build问我密码的根目录:

 While not mandatory, it is highly recommended that you set a password for the MySQL administrative "root" user. If this field is left blank, the password will not be changed. New password for the MySQL "root" user: 

我input密码,但只是保持在这个状态。

我可以这样安装mysql吗?我不想自动安装它

Docker的方式是“一个进程的一个容器”。 你需要一个容器的Apache和一个MySQL。 你可以使用官方的php图像和官方的mysql图像

为了链接容器,我推荐使用docker-compose

被接受的答案在某种抽象意义上可能是正确的,但这与手头的事情完全无关。 您需要一种静态指定密码的方法。 不pipe你是否遵循“一个过程,一个容器”的教条,你都需要这个。

这里的答案告诉我们如何做,但是它遗漏了一个关键的设置:你仍然必须告诉debconf使用Noninteractive前端,如下所述。

这里有一个基于上面的工作Dockerfile的例子。

 FROM ubuntu:latest MAINTAINER Jonathan Strange <jstrange@norrell.edu> RUN apt-get update \ && apt-get install -y apt-utils \ && { \ echo debconf debconf/frontend select Noninteractive; \ echo mysql-community-server mysql-community-server/data-dir \ select ''; \ echo mysql-community-server mysql-community-server/root-pass \ password 'JohnUskglass'; \ echo mysql-community-server mysql-community-server/re-root-pass \ password 'JohnUskglass'; \ echo mysql-community-server mysql-community-server/remove-test-db \ select true; \ } | debconf-set-selections \ && apt-get install -y mysql-server apache2 python python-django \ python-celery rabbitmq-server git 

嗯,我认为最好的办法是把官方的MySQL镜像 ,并将其链接到您的应用程序容器。

希望能帮助到你。

以防万一sendarle的答案不是很清楚,添加如下所示的环境DEBIAN_FRONTEND到您的Dockerfile:

 FROM ubuntu:latest ENV DEBIAN_FRONTEND noninteractive RUN apt-get update \ && apt-get install -y mysql-server mysql-client libmysqlclient-dev --no-install-recommends \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*