搭建 Docker+Nginx+Tomcat+PHP+MySQL 运行环境
Docker 近两年简直就是大红大紫,发展非常之快。所以感觉这项技术已经成熟的情况下,决定学习了。
就近期使用的情况来看,docker 确实好用,已经深深喜欢上了它。有了 docker,无论是架构、运维还是开发,都变得比以前方便高效很多。
这篇文章的主题就是用 docker 搭建一个常用的运行或开发环境:Docker+Nginx+Tomcat+PHP+MySQL
测试环境
- CentOS 7.3
- Docker 1.12.6
安装配置 Docker
CentOS 7.3 下利用 yum 安装 docker,并加入开机启动
1 | yum -y install docker |
如果使用 docker 官网仓库,国内会非常的慢,这里推荐两个比较好用的国内镜像:阿里云、网易蜂巢
博主用的是阿里云的镜像,速度比较快。使用方法很简单,先注册个账号,进入管理后台,然后里面有详细的教程。它还有个比较好的功能就是,可以在后台创建自己的远程仓库。
把需要用到的镜像拉下来:
1 | docker pull nginx |
创建相关文件夹
保存下面的 shell 脚本,执行
1 | [root@localhost ~]# vi dmlkinit.sh |
1 |
|
可以先启动 Nginx、Tomcat 容器,把里面一些默认配置复制下来,比如 Nginx 的 conf 文件,Tomcat 的 webapps 文件等,再把这些临时用的容器删除了:
1 | docker run -itd --name tmp-nginx nginx |
启动容器
MySQL
1 | docker run -itd --name dmlkdockermysql -v /dmlkdata/apps/mysql/etc/mysql/conf.d:/etc/mysql/conf.d -v /dmlkdata/apps/mysql/var/lib/mysql:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=admin mysql |
或者
1 | docker run -itd --name dmlkdockermysql -p 3306:3306 -v /dmlkdata/apps/mysql/etc/mysql/conf.d:/etc/mysql/conf.d -v /dmlkdata/apps/mysql/var/lib/mysql:/var/lib/mysql --privileged -e MYSQL_ROOT_PASSWORD=admin mysql |
这两者之间的区别就是数据库是否映射宿主机端口,如果映射了后续可以配置外网可以访问到数据库。
Tomcat
1 | docker run -itd --name dmlkdockertomcat -v /dmlkdata/apps/tomcat/usr/local/tomcat/webapps:/usr/local/tomcat/webapps -v /dmlkdata/apps/tomcat/usr/local/tomcat/logs:/usr/local/tomcat/logs --privileged --link dmlkdockermysql:dmlkdockermysql tomcat |
PHP
1 | docker run -itd --name dmlkdockerphp -v /dmlkdata/apps/php/var/www/html:/var/www/html --privileged --link dmlkdockermysql:dmlkdockermysql php:fpm |
Nginx
新建配置文件: /dmlkdata/apps/nginx/etc/nginx/conf.d/php.conf
1 | server { |
/dmlkdata/apps/nginx/etc/nginx/conf.d/tomcat.conf
1 | server { |
1 | docker run -itd --name dmlkdockernginx -p 80:80 -v /dmlkdata/apps/nginx/etc/nginx:/etc/nginx -v /dmlkdata/apps/nginx/usr/share/nginx/html:/usr/share/nginx/html:ro -v /dmlkdata/apps/nginx/var/log/nginx:/var/log/nginx --link dmlkdockerphp:dmlkdockerphp --link dmlkdockertomcat:dmlkdockertomcat --privileged nginx |
开放服务器端口
服务器的端口如果没有对外开放,外网是访问不了的。 这里我选择开放 80 和 3306 端口,分别对应 Nginx 和 MySQL:
1 | firewall-cmd --zone=public --add-port=80/tcp --permanent |
更改 hosts 文件,方便开发测试用:
1 | [root@localhost ~]# ip addr |
找到本机服务器 IP 是 192.168.95.128 添加到 C:\Windows\System32\drivers\etc\hosts
1 | 192.168.95.128 dmlk.dev |