环境准备
为了实现构建镜像时mysql自动安装,编写mysql安装脚本,将其与dockerfile文件放置在同一目录
#!/usr/bin/env bash
# *********************************************************#
# * Author : 青菜浪人 #
# * Filename : install.sh #
# * Description : msyql_8.0.36_install #
# *********************************************************#
dir="/root/mysql/"
function centos8(){
list_8=(
mysql-community-client-plugins-8.0.36-1.el8g.x86_64.rpm
mysql-community-common-8.0.36-1.el8g.x86_64.rpm
mysql-community-libs-8.0.36-1.el8g.x86_64.rpm
mysql-community-client-8.0.36-1.el8g.x86_64.rpm
mysql-community-icu-data-files-8.0.36-1.el8g.x86_64.rpm
mysql-community-server-8.0.36-1.el8g.x86_64.rpm
)
for i in ${list_8[@]}
do
rpm -ivh ${dir}${i}
done
}
function centos7(){
list_7=(
mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
mysql-community-common-8.0.36-1.el7.x86_64.rpm
mysql-community-libs-8.0.36-1.el7.x86_64.rpm
mysql-community-client-8.0.36-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
mysql-community-server-8.0.36-1.el7.x86_64.rpm
)
for j in ${list_7[@]}
do
rpm -ivh ${dir}${j}
done
}
if cat /etc/os-release |grep "7" 1>/dev/null ;then
centos7
else
centos8
fi
编写shell脚本实现容器启动时运行Apache2和mysql,并将mysql的root密码修改为
Admin@123
,同时为了实现容器持久化运行在末尾执行tail -f /dev/null
#!/usr/bin/env bash
# *********************************************************#
# * Author : Green vegetable ronin #
# * Filename : start.sh #
# * Description : Service startup #
# *********************************************************#
systemctl start mysqld httpd php-fpm
if [ $? -eq 0 ];then
passwd=$(cat /var/log/mysqld.log |grep "password"|awk '{print $NF}')
mysql --connect-expired-password -uroot -p"$passwd" -e "alter user 'root'@'localhost' identified by 'Admin@123';update mysql.user set Host = '%' where Host = 'localhost' and User='root';flush privileges;"
else
echo "error: $passwd"
fi
tail -f /dev/null
编写Dockerfile
需将上面的两个shell脚本和
systemctl.py
文件与此Dockerfile
文件放在同一目录进行打包,否则会打包失败
注:替换容器中的systemctl文件为 https://github.com/gdraheim/docker-systemctl-replacement/blob/master/files/docker/systemctl.py 不替换无法使用systemctl命令
使用build打包镜像
docker build -t lamp:1.2 .
查看打包好的镜像
docker images
运行测试
将使用dockefile打包好的镜像运行测试
docker run -d -p 80:80 -p 3306:3306 --name lamp lamp:1.2
在浏览器访问测试
在Windows客户端连接数据库测试
mysql -uroot -h 192.168.10.28 -p
往期推荐
原文始发于微信公众号(青菜浪人):使用Dockerfile构建lamp环境
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/274240.html