2017-06-11 18 views
1

私はデフォルトのmysqlイメージをdocker composeのマルチコンテナアプリで1つのコンテナとして使用しています。私は最近、定期的なメッセージが毎秒記録されるのを見始めました。メッセージは、Docker mysql image:定期アクセスがrootに拒否されました

[Note] Access denied for user 'root'@'localhost' (using password: NO) 

であり、タイムスタンプが前に付いています。次のようにドッキングウィンドウ-compose.ymlにおけるサービスの構成は次のとおりです。

image: "mysql:5.7.18" 
    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --port=$MYSQL_CONTAINER_PORT] 
    expose: 
     - "${MYSQL_CONTAINER_PORT}" 
    volumes: 
     - ${MYSQL_DATA}:/var/lib/mysql 
    restart: always 
    environment: 
     - MYSQL_ROOT_PASSWORD 
     - MYSQL_DATABASE 
     - MYSQL_USER 
     - MYSQL_PASSWORD 
    ports: 
     - "${MYSQL_HOST_PORT}:${MYSQL_CONTAINER_PORT}" 
    healthcheck: 
     test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] 
     timeout: 5s 
     retries: 10 

コンテナのイメージを構築するとき、私は意図的にrootのパスワードを設定していて、アプリケーションは、ユーザー名とパスワードを経由してうまくデータベースにアクセスすることが可能です私は環境のセクションで設定しています。

私のアプリにはrootとしてmysqlイメージにアクセスしようとするものは何もありませんが、パスワードなしでrootとしてログインしようとする試みのソースをどのように考え出すかについての考えはありますか?

docker-compose.ymlファイルが役に立ちましたら、バージョン2.1に設定されています。他の2つのコンテナは、(1)フラスコアプリ、(2)アプリのプロキシサーバーでもあるnginxウェブサーバーです。

+0

は、あなたが問題を解決しましたか? – German

+0

はい、応答が遅れて申し訳ありませんが、あなたの答えは完璧に機能しました。私は健康診断は起動時にのみ実行されると想定していたため、可能性としては考えていませんでした。 –

答えて

1

あなたの問題は、ヘルス・チェック・コマンドである、ドッカーは、パスワードなしでrootユーザーでコマンドを実行しよう:

image: "mysql:5.7.18" 
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --port=$MYSQL_CONTAINER_PORT] 
expose: 
    - "${MYSQL_CONTAINER_PORT}" 
volumes: 
    - ${MYSQL_DATA}:/var/lib/mysql 
restart: always 
environment: 
    - MYSQL_ROOT_PASSWORD 
    - MYSQL_DATABASE 
    - MYSQL_USER 
    - MYSQL_PASSWORD 
ports: 
    - "${MYSQL_HOST_PORT}:${MYSQL_CONTAINER_PORT}" 
healthcheck: 
    test: ["CMD", "mysqladmin", "-u$MYSQL_USER", "-p$MYSQL_PASSWORD", "ping", "-h", "localhost"] 
    timeout: 5s 
    retries: 10 
関連する問題