Create MariaDB Docker container

This commit is contained in:
Disassembler 2018-01-19 15:50:15 +01:00
parent 07cd9518c9
commit e9e676dd33
No known key found for this signature in database
GPG Key ID: 524BD33A0EE29499
5 changed files with 143 additions and 0 deletions

27
mariadb.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
SOURCE_DIR=$(realpath $(dirname "${0}"))/mariadb
# Build Docker container
docker build -t mariadb ${SOURCE_DIR}
# Create MariaDB instance
mkdir -p /srv/mariadb/data
chown 3306:3306 /srv/mariadb/data
docker run --rm --name mariadb -h mariadb -v /srv/mariadb/data:/var/lib/mysql mariadb mysql_install_db --user=mysql
# Configure MariaDB
cp ${SOURCE_DIR}/srv/mariadb/my.cnf /srv/mariadb/my.cnf
# Enable query logging. Only if the DEBUG environment variable is set
if [ ${DEBUG:-0} -eq 1 ]; then
sed -i 's/#general_log/general_log/g' /srv/mariadb/my.cnf
fi
# Configure MariaDB service
cp ${SOURCE_DIR}/etc/init.d/mariadb /etc/init.d/mariadb
rc-update add mariadb boot
service mariadb start
# Configure MariaDB admin
cat ${SOURCE_DIR}/adminpwd.sql | docker exec -i mariadb mysql

14
mariadb/Dockerfile Normal file
View File

@ -0,0 +1,14 @@
FROM alpine:3.7
MAINTAINER Disassembler <disassembler@dasm.cz>
RUN \
# Create OS user (which will be picked up later by apk add)
addgroup -S -g 3306 mysql \
&& adduser -S -u 3306 -h /var/lib/mysql -s /bin/nologin -g mysql -G mysql mysql \
# Install MariaDB
&& apk --no-cache add mariadb mariadb-client
VOLUME ["/etc/mysql", "/var/lib/mysql"]
EXPOSE 3306
CMD ["mysqld_safe"]

5
mariadb/adminpwd.sql Normal file
View File

@ -0,0 +1,5 @@
DELETE FROM mysql.user WHERE User != 'root' OR Host != 'localhost';
INSTALL PLUGIN unix_socket SONAME 'auth_socket';
UPDATE mysql.user SET plugin='unix_socket';
FLUSH PRIVILEGES;
DROP DATABASE test;

16
mariadb/etc/init.d/mariadb Executable file
View File

@ -0,0 +1,16 @@
#!/sbin/openrc-run
description="MariaDB docker container"
depend() {
need docker net
use dns logger netmount
}
start() {
/usr/bin/docker run -d --rm --name mariadb -h mariadb -v /srv/mariadb/my.cnf:/etc/mysql/my.cnf -v /srv/mariadb/data:/var/lib/mysql mariadb
}
stop() {
/usr/bin/docker kill mariadb
}

View File

@ -0,0 +1,81 @@
# Example MariaDB config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MariaDB plays
# an important part, or systems up to 128M where MariaDB is used together with
# other programs (such as a web server)
#
# MariaDB programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, do:
# 'my_print_defaults --help' and see what is printed under
# Default options are read from the following files in the given order:
# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MariaDB clients
[client]
port = 3306
socket = /run/mysqld/mysqld.sock
[mysqld]
port = 3306
socket = /run/mysqld/mysqld.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
#general_log = 1
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout