在我之前写的文章中已经实现了在独立的容器中运行apache和mysql。
请参阅:
《创建带Apache服务的Centos Docker镜像》
《详解如何使用DockerHub官方的mysql镜像生成容器》
但是在实际的应用过程中,很少有让这二个服务单独运行的,最常见的应用是lamp环境,将apache、php和mysql结合到一起。在实际生产环境中,除非访问量不是很大的站点,一般都会将mysql放到一台服务器上,apache+php放到另外一台服务器上,以提高性能。
现在我就分步骤演示这个环境的搭建,搭建后将通过安装Discuz结合数据容器与应用容器,实现lamp,并测试是否工作正常。
一、运行mysql容器
mysql的docker镜像以Docker Hub提供的官方镜像为基础,来生成数据容器。
1、在宿主机上建立映射到容器的mysql数据目录
mkdir /mysql_lamp
2、建立容器
2.1、生成容器
docker run -d -e mysqld -e MYSQL_ROOT_PASSWORD=147258 -e MYSQL_USER=steven -e MYSQL_PASSWORD=147258 -e MYSQL_DATABASE=discuz -v /mysql_lamp:/var/lib/mysql --name mysql_db mysql
命令中的参数除了name外,我在《详解如何使用DockerHub官方的mysql镜像生成容器》有详细的说明。
name 是给新生成的容器命名,起一个很好记忆的名字。如果不指定系统将会自动生成。
2.2、查看生成的容器:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d427e7c85505 mysql "/entrypoint.sh mysq 5 seconds ago Up 4 seconds 3306/tcp mysql_db
2.3、查看数据目录下是否生成相应的文件:
[root@localhost ~]# ll /mysql_lamp/
总用量 110608
-rw-rw---- 1 999 999 56 10月 18 13:34 auto.cnf
drwx------ 2 999 999 4096 10月 18 13:34 discuz
-rw-rw---- 1 999 999 12582912 10月 18 13:35 ibdata1
-rw-rw---- 1 999 999 50331648 10月 18 13:35 ib_logfile0
-rw-rw---- 1 999 999 50331648 10月 18 13:34 ib_logfile1
drwx------ 2 999 999 4096 10月 18 13:34 mysql
drwx------ 2 999 999 4096 10月 18 13:34 performance_schema
一切正常!
二、生成apache+php的镜像
这里的基础镜像以《创建带Apache服务的Centos Docker镜像》介绍的镜像为基础。
1、查看现有镜像
[root