测试环境
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# docker --version
Docker version 1.13.1, build 0be3e21/1.13.1
构建过程如下
环境准备
[root@localhost ~]# mkdir lamp //创建工作目录
[root@localhost ~]# cd lamp/ //进入目录
确保有如下的文件存在
[root@localhost lamp]# ll
总用量 8900
-rw-r--r--. 1 root root 1572 12月 1 2016 CentOS7-Base-163.repo //163的源
-rw-r--r--. 1 root root 412 11月 30 10:59 Dockerfile //dockerfile文件
-rw-r--r--. 1 root root 11763 11月 30 10:59 httpd.conf //httpd主配置文件
-rw-r--r--. 1 root root 753 11月 30 10:19 my.cnf //数据库主配置文件
-rw-r--r--. 1 root root 287 11月 30 10:40 run.sh //启动服务的脚本
-rw-r--r--. 1 root root 9082696 11月 30 10:14 wordpress-4.9.4-zh_CN.tar.gz //博客系统
Dockerfile文件内容如下
FROM centos:centos7.5.1804 //指定基础镜像 可以自定义
MAINTAINER ceshi //指定名称以及作者
RUN rm -rf /etc/yum.repos.d/* //删除原有的镜像
COPY *.repo /etc/yum.repos.d/ //将163镜像拷贝到指定目录
COPY my.cnf /etc/my.cnf //复制my.cnf 文件到指定目录
COPY run.sh /run.sh //复制启动脚本到指定目录
RUN chmod +x /run.sh //给脚本赋予执行权限
RUN yum install -y httpd mariadb-server php php-mysql php-fpm && mysql_install_db --user=root //安装lamp环境相关软件包以及初始化数据库操作
ADD wordpress-4.9.4-zh_CN.tar.gz /var/www/html //将博客系统解压并复制到指定目录
COPY httpd.conf /etc/httpd/conf/httpd.conf //复制httpd配置文件到指定目录
ENV LC_ALL en_US.UTF-8 //设置数据库的字符集 让数据库支持中文
EXPOSE 80 3306 9000 //暴露端口号
CMD ["./run.sh"] //运行脚本
httpd.conf文件内容如下
针对于这个配置文件,我们只需要修改一处内容即可(提前下载httpd服务获取到的httpd.conf文件)
119 DocumentRoot "/var/www/html/wordpress"
将默认的网站发布目录修改为WordPress的路径即可
my.cnf文件内容如下
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
添加如上的信息即可
run.sh文件内容如下
#!/bin/bash
mysqld_safe --user=root & //启动数据库 后台启动
sleep 3 //延迟3秒
mysql -e "create database wordpress;" //创建数据库
mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123';" //创建root用户以及密码
mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123';" //赋权操作
sleep 3
httpd -DFOREGROUND & //启动httpd服务 后台启动
sleep 3
php-fpm //启动php 前提运行
注:设置服务启动的时候,必须要存在一个前台运行的服务或者使用tail -f 生成实时文件存在
不然,上面设置数据库 以及 httpd 服务的后台运行会自动停掉,就会导致这个容器启动不了
生成镜像操作
[root@localhost lamp]# docker build -t centos_lamp:v1.0 .
[root@localhost lamp]# docker images //查看生成是否成功
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_lamp v1.0 932bc4270eac 9 minutes ago 555 MB
启动测试
[root@localhost lamp]# docker run -itd --name lamp -P lamp:v8.0
88d0fda56147f53a4ee061985ad7634b9f38bed48b44192c156edab4858cd048
[root@localhost lamp]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88d0fda56147 lamp:v8.0 "./run.sh" 5 seconds ago Up 3 seconds 0.0.0.0:32785->80/tcp, 0.0.0.0:32784->3306/tcp, 0.0.0.0:32783->9000/tcp lamp
-P 使用随机端口映射
浏览器访问测试
配置WordPress
输入好数据库root账户密码后点击提交即可
这里需要我们自行创建一个文件
需进入容器然后进入WordPress目录创建即可
docker exec -it lamp /bin/bash
配置基本信息
登录测试
整个操作就此完成,效果达到