Как переопределить стандартную конфигурацию контейнера MySQL 5.7 - PullRequest
0 голосов
/ 20 декабря 2018

Я не могу заменить стандартный файл /etc/my.cnf в стандартном контейнере mysql 5.7.

Я использую контейнер mysql 5.7 (стандартный образ Docker HUB).Я хочу заменить файл etc/my.cnf, чтобы включить ведущие-ведомые операции.Я хочу добиться этого путем монтирования тома из файла docker-compose.yml.

Новый my.cnf должен быть:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

# Replication and mirroring settings
server-id = 1
auto_increment_increment = 3
auto_increment_offset = 0
log_bin           = /var/log/mysql/log-bin
log_bin_index     = /var/log/mysql/log-bin.index
binlog_format     = row
expire_logs_days  = 10
log_slave_updates

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

В docker-compose.yml У меня есть следующие строки:

mysql:
    image: mysql/mysql-server:5.7
    container_name: rucio-mysql
    volumes:
      - ./mysql-config/my-master.cnf:/etc/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_ROOT_HOST=%

Пути верны, но контейнер запускается и сразу выходит из системы.

Заранее спасибо,

Slid

1 Ответ

0 голосов
/ 20 декабря 2018

Нельзя указывать файлы как тома, это не работает.Тома - это каталоги.

Если ваша конфигурация постоянна и не ожидается изменения между выполнениями контейнера, просто унаследуйте в нее свой собственный контейнер от mysql/mysql-server:5.7 и COPY новой конфигурации:

Dockerfile

FROM mysql/mysql-server:5.7
COPY my.cnf /etc/

и используйте ваш новый образ в docker-compose.

Если конфигурация требует больших затрат, лучше использовать тома, но вам придется вручную перезаписывать ее при запуске контейнера,Примерно так:

docker-compose.yml

mysql:
    image: mysql/mysql-server:5.7
    container_name: rucio-mysql
    volumes:
      - ./mysql-config:/configs
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_ROOT_HOST=%
    command: ["cp", "-f", "/configs/my-master.cnf", "/etc/my.cnf"]
...