我正在尝试自定义mariadb容器,使其具有更大的无害an缓冲区大小。我的理想方案是使用sed,这样我就不必维护一个重复的my.cnf配置文件。
这是我的Dockerfile,但它并没有像我预期的那样替换值,我不知道我做错了什么.
FROM mariadb:10.1
RUN sed -ri 's/innodb_buffer_pool_size\\ =\\ 256M/innodb_buffer_pool_size\\ =\\ 512M/g' /etc/mysql/my.cnf \
&& cat /etc/mysql/my.cnf | grep innodb;这方面的产出如下:
Sending build context to Docker daemon 231.9 MB
Step 1 : FROM mariadb:10.1
---> 9a0138c02438
Step 2 : RUN sed -ri 's/innodb_buffer_pool_size\\ =\\ 256M/innodb_buffer_pool_size\\ =\\ 512M/g' /etc/mysql/my.cnf && cat /etc/mysql/my.cnf | grep innodb;
---> Running in eaedaf2837ff
#innodb_log_file_size = 50M
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 8M
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT
#innodb_autoinc_lock_mode=2
#innodb_flush_log_at_trx_commit=0
---> b0e479c55581
Removing intermediate container eaedaf2837ff
Successfully built b0e479c55581我尝试过用\\来转义这些空间,而不是在没有运气的情况下转义这些空间。
发布于 2016-08-21 18:09:03
只是不要像你那样逃离这些空间:
\\进行转义实际上会创建一个\字符。难怪你的大梁不起作用。这样做是可行的:
sed -i 's/innodb_buffer_pool_size = 256M/innodb_buffer_pool_size = 512M/g' /etc/mysql/my.cnf-r, --regexp-extended开关。regexp扩展包括诸如前向查找..。这里不需要。改进:使用组来回忆匹配的值。如果必须更改参数名,则减少维护。
sed -i 's/\(innodb_buffer_pool_size\) = 256M/\1 = 512M/g' /etc/mysql/my.cnf或匹配多个参数名称。
sed -i 's/\(innodb_buffer_pool_size\|some_other_param\) = 256M/\1 = 512M/g' /etc/mysql/my.cnfhttps://stackoverflow.com/questions/39067322
复制相似问题