编写不易,转载请注明 (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';