需求
假如有这样一个项目,在家开发需要搭建环境,在公司开发需要搭建环境,到测试需要搭建环境,到线上还需要搭建环境。而且搭建环境的时候,还要安装各种依赖,还可能出现,本地能用,测试不能用等各种情况。这个情况下,我们只需要在系统中装上Docker,写好Dockerfile,运行docker-compose.yml 就自动完成部署,保证了在各个平台上的一致性,岂不是既方便又高效。
多个容器的好处
搭建PHP环境,必需要启动的容器: nginx、php。当然,除了这些容器,还可能涉及到如:mysql、redis、Memcached 等相关扩展。
相比采用单容器部署(原生安装lnmp),多容器部署比较灵活,比如 在安装nginx的时候,出现了未知错误,而又不能解决,只能重装的时候,这时,我们只需要删除旧的ngxin容器,启动一个新nginx容器就行了,php等相关容器,不受任何影响。但是采用单容器部署,就相当于删除了整个环境,所有的东西都要重新安装部署。当然,单容器也好处,在保证正常运行的情况下,可以将此容器构建成一个新的镜像,每次使用的时候,只需要以此镜像启动一个容器就可以了。
资源
关于本次搭建涉及的相关文件跳转:资源
关于docker的安装跳转:docker安装
关于docker的使用命令跳转:
一、手动构建
-
拉取需求镜像
docker pull php:7.2-fpm docker pull nginx docker pull mysql:5.7 docker pull redis:3.2 #版本号可根据实际需求选择
-
通过redis镜像启动一个redis容器
docker run --name master-redis -p 6379:6379 -d redis:3.2
-
通过mysql镜像启动一个mysql容器
docker run --name master-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# -e MYSQL_ROOT_PASSWORD 给mysql设置初始密码
-
通过php镜像启动一个php容器
docker run -d -p 9000:9000 --name master-php -v d:/dnmp/www:/var/www/html -v d:/dnmp/php:/usr/local/etc/php --link master-db:master-db --link master