编写不易,转载请注明 (http://shihlei.iteye.com/blog/2423672)
一 Java1.8 Dockerfile 构建(可以省略)
(1)目录结构
$ ls
Dockerfile jdk-8u161-linux-x64.tar.gz
(2)Dockerfile
############################################################
# Dockerfile to build Java Installed Containers
# Based on Centos Latest
# docker build -t centos:java .
############################################################
FROM centos:latest
LABEL author="puppet" \
description="Dockerfile to build Java Installed Containers"
# ADD JDK
ADD jdk-8u161-linux-x64.tar.gz /usr/local/
RUN /bin/bash -c 'cd /usr/local; ln -s jdk1.8.0_161 java'
ENV JAVA_HOME=/usr/local/java
ENV JRE_HOME=$JAVA_HOME/jre \
PATH=$JAVA_HOME/bin:$PATH \
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOEM/lib/tools.jar
(3)构建: docker build -t centos:java .
二 mysql 5.7.22 Dockerfile
(1)目录结构
$ ls
Dockerfile my.cnf mysql-boost-5.7.22.tar.gz
(2)my.cnf
[mysqld]
datadir=/data/mysql/mysql_data
socket=/data/mysql/mysql_data/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
key_buffer_size = 8144M
table_cache_size = 1024M
read_buffer_size = 128M
sort_buffer_size = 32M
query_cache_size = 100M
thread_cache_size = 16
thread_concurrency = 32
max_heap_table_size = 400M
tmp_table_size = 400M
max_connections = 500
# The end
(2)Dockerfile
############################################################
# Dockerfile to build MySQL 5.7.22 on CentOS7
# Based on Centos Latest
# docker build -t puppet:mysql .
############################################################
FROM centos:java
LABEL author="puppet" \
description="Dockerfile to build MySQL 5.7.22 on Centos 7"
# add MySQL, download source code
ADD mysql-boost-5.7.22.tar.gz /usr/local/mysql
# add group , user;
RUN /bin/bash -c 'groupadd mysql; useradd -r -g mysql -s /bin/false mysql'
# workdir
WORKDIR /usr/local/mysql/mysql-5.7.22
# mkdir dir;
RUN /bin/bash -c 'mkdir -p /data/mysql/mysql_data ; chown -R mysql:mysql /data/mysql'
# install dependency;
RUN /bin/bash -c 'yum -y install bison cmake make gcc gcc-c++ ncurses-devel'
# make
RUN /bin/bash -c 'cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/mysql-5.7.22 -DMYSQL_DATADIR=/data/mysql/mysql_data -DMYSQL_UNIX_ADDR=/usr/local/mysql/5.7.22/mysql.sock -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost/boost_1_59_0/ ; make ; make install'
# set start
RUN /bin/bash -c 'cp ./support-files/mysql.server /etc/init.d/mysqld; chown -R mysql:mysql /usr/local/mysql/; chmod 755 /etc/init.d/mysqld; chkconfig --add mysqld; chkconfig mysqld on'
# add conf
ADD my.cnf /etc/
# port 3306
EXPOSE 3306:3306
(3)构建: docker build -t centos:java .
三 使用
(1)启动容器
docker run -tid --net shadownet --ip 6.6.6.10 --hostname mysql --name mysql -p 3306:3306 -v /Users/mysql/data_share:/data/mysql_share --volumes-from datashare puppet:mysql /bin/bash
docker exec -ti mysql /bin/bash
(2)初始化数据库,连接
cd /usr/local/mysql/mysql-5.7.22
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.22 --datadir=/data/mysql/mysql_data
#安装完会显示临时密码:2018-05-28T09:17:14.020796Z 1 [Note] A temporary password is generated for root@localhost: djyN+y,so2Ka
# 启动数据库
/etc/init.d/mysqld start
./bin/mysql -u root -p -h localhost -S /data/mysql/mysql_data/mysql.sock
(3)修改密码
ALTER USER 'root'@'localhost' identified by '需要设置安全等级很高的密码,否则报错'
alter user 'root'@'localhost' identified by '123456';
(4)授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';