2016-09-14 1 views
0

Привет Я пытаюсь использовать mysql_config_editor инструменты непосредственно в моем Dockerfile:mysql_config_editor с Docker

FROM mysql 
RUN mysql_config_editor set --login-path=local --user=root --password 

Но эта команда предложит пользователю ввести пароль. Есть ли способ установить пароль непосредственно из файла Docker, зная, что невозможно установить пароль непосредственно в командной строке.

[email protected]:~# mysql_config_editor set --login-path=local --user=root --password     
Enter password: 

[email protected]:~# mysql_config_editor set --login-path=local --user=root --password=root 
mysql_config_editor: [ERROR] mysql_config_editor: option '--password' cannot take an argument 

Благодаря

ответ

0

Я могу думать 2 подходов:

  1. Используйте режим Interactive и commit изменение Для этого вы начнете контейнер с тузды изображениями с -it переключателем.

, то вы внесете изменения.

и зафиксировать изменения с фиксацией докеров для создания нового изображения из контейнера.

  1. Пустой пароль root на время действия файла докеров.

    MYSQL_ALLOW_EMPTY_PASSWORD=yes

Выше переменная среды, что позволяет пустой пароль. Убедитесь, что вы изменили его по умолчанию по завершении.

Надеюсь, это поможет.

0

Вы можете использовать expect сделать это:

Это ваш Dockerfile:

FROM mysql:5.7 

RUN apt-get update && apt-get --no-install-recommends --no-install-suggests -y install expect 

ENV MYSQL_ROOT_PASSWORD "secure_root_password" 

ADD mysql_config.sh /root/mysql_config.sh 
RUN cd /root && ./mysql_config.sh $MYSQL_ROOT_PASSWORD 

И это mysql_config.sh:

#!/usr/bin/expect 

set pwd [lindex $argv 0]; 

spawn mysql_config_editor set --login-path=local --host=localhost --user=root --password 
expect -nocase "Enter password:" {send "${pwd}\r"; interact} 

Теперь вы можете подключить непосредственно к MySQL:

$ docker exec -it your-mysql-container mysql --login-path=local 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 6 
Server version: 5.7.18 MySQL Community Server (GPL) 

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

Возможно, это не самый чистый способ, но он работает!

Смежные вопросы