好久没有写 docker 镜像的构建了。 我之前完成了web项目的部署,和简单的负载,但是缺少对数据库的镜像,而且我的Web也都为静态页面,所以在接着对我的web项目进行加工前,需要使用到数据库,个人服务器有限,所以还是以构建镜像的方式进行添加
数据库我采用 mysql
因为我对mysql第一次接触,所以 我也踩了不少坑
1,数据库初始密码 mysql 5.7 开始,初始化密码的呈现方式有所改变
2,数据库启动问题 mysql 5.7 开始, 启动文件命令有所改变
3,镜像文件体积(优化了部分)
资源: MySQL 下载地址
dockerfile
FROM centos:7
RUN yum install -y libaio-devel.x86_64 numactl.x86_64 &&\
yum clean all
ENV Mysql_HOME /usr/local/mysql/
ENV PATH $PATH:$Mysql_HOME/bin
ADD my.cnf /etc
ADD startup.sh /
ADD mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz /usr/local
RUN mv /usr/local/mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql &&\
useradd mysql && \
chmod 777 /startup.sh &&\
chmod 664 /etc/my.cnf &&\
mkdir $Mysql_HOME/data &&\
chown mysql:mysql -R /usr/local/mysql
EXPOSE 3306 33060
CMD ["/startup.sh"]
startup.sh
#!/bin/sh
#初始化
mysqld --initialize --user=mysql
#启动服务
mysqld
my.cnf
这个配置文件地址:mysql配置文件查看地址
具体配置其实不用那么多,具体看自己需求,对mysql, 我还需要再多多研究
因为我没有优化过过程,所以镜像文件体积还是会大很多,具体对于体积的优化, 我参考了:优化体积博客
内容具体是说:
尽量减少构建过程,相同的构建可以合并到一个过程中,比如,yum insert 相关就可以合并到一个过程中,并且,每次yum insert 后 最好做 clean 处理,还有cp 过程,等。
对于MySQL 5.7 版本镜像启动,需要注意:
1,MySQL 启动文件的不同
2,初始密码在 所打印的日志中:如下图
可以看我的码云:去码云看看
本章到此结束
资源: nodeJS 下载地址
来源:CSDN
作者:隔着
链接:https://blog.csdn.net/zhang355/article/details/80853590