2016-07-13 4 views
6

で凍結ドッカーでのMySQLの私は、次のdockerfile持っている:ドッカーは私にパスワードのルートを尋ねる構築し、後rootパスワードの設定

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

を:

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: 

私はパスワードを入力し、しかし、単にその状態にとどまる。

が、私はこのようにMySQLをインストールすることはできます?私はそれをインストールする必要はありません自動的に

答えて

1

ドッカーウェイは「1つのプロセスに1つのコンテナ」です。 Apache用のコンテナとmysql用のコンテナが必要です。 あなたがドッキングウィンドウ・作曲、私が使用することをお勧めしますコンテナをリンクするため

+0

私は優れているオプションスーパーバイザ...を使用することを計画しましたか?ドッカーの作者または監督者ですか? – alvarezsh

+1

私たちはスーパーバイザーを使用しましたが、現在は別のコンテナを使用しています。いくつかの利点があります。我々は公式の画像と更新を使用することができ、クラスタの一部のみを更新し、コンテナーのプレビオバージョンに高速にロールバックすることができます。 –

+0

これは本当に面白いです、私はドッカーの作成を試みます – alvarezsh

0

はハムが、私は最善の方法はOfficial mysql imageを引くと、あなたのアプリケーションコンテナにリンクすることだと思います。

希望します。

17

official php imageofficial mysql image

を使用することができます受け入れ答えは、いくつかの抽象的な意味では本当かもしれないが、それは手で問題に全く無関係です。パスワードを静的に指定する方法が必要です。 official imageを使用している場合を除き、「1つのプロセス、1つのコンテナ」ドグマに従うかどうかにかかわらず、必要となります。

答えhereはどのように伝えますが、それはキー設定を残し:hereを説明するように、あなたはまだ、Noninteractiveフロントエンドを使用するようにdebconfを伝える必要があります。

ここには、上記に基づいた作業Dockerfileの例があります。

FROM ubuntu:latest 
MAINTAINER Jonathan Strange <[email protected]> 
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 

これはあまりにもひどく異なるofficial Dockerfileが何をするかからではありません - 彼らは多少異なる実際のパスワードの設定を扱うのに。

そうのようないくつかの人々は、noninteractivesetting the DEBIAN_FRONTEND環境変数によって成功を収めている:

ENV DEBIAN_FRONTEND noninteractive 

しかし、それはすべてのケースで動作するようには思えません。 debconfを使用すると、私にとってより信頼できることが証明されています。

+0

容器の内側。ERROR 2002(HY000):ソケット '/var/run/mysqld/mysqld.sock'(2)経由でローカルMySQLサーバに接続できません。mysql -u root -prootを使ってmysqlコンソールを起動できませんでした。 –

+0

@ Vinujan.Sそれは別の問題です。このサイトでまだ質問されていない場合は、新しい質問としてそれを聞かなければなりません。 – senderle

+0

後で問題を修正しました。しかし、私はメカニズムをmysqlのための別のコンテナを持つように変更しました。回答いただきありがとうございます。心から感謝する。 –

2

念のsendarleの答えは、このようなあなたのDockerfileに、以下に示すように、環境DEBIAN_FRONTENDを追加し、非常に明確ではありませんでしたが:

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/* 
+0

容器の中に。私はmysql -u root -prootを使ってmysqlコンソールを起動できませんでした。エラー2002(HY000):ソケット '/var/run/mysqld/mysqld.sock'(2)を通してローカルMySQLサーバーに接続できません。 –

関連する問題