使用 Docker 容器建立 Nginx proxy 实现反向代理和负载均衡的方式部署 Drupal 应用

Submitted by dravenk on Sun, 12/03/2017 - 00:57

下面是简单的应用实例命令:  

新建  Nginx 容器 :

docker run --name nginxproxy --restart=always -v /root/myspace/nginx:/etc/nginx:ro -p 80:80 -p 443:443 -d nginx

新建 MySQL 数据库容器:

docker run --name mysql --restart=always -v /root/myspace/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ExamplePassword -p 3306:3306 -d mysql

新建 Drupal 容器:

docker run --name dravenkblog --restart=always -v /root/myspace/myblog:/var/www/html -p 8880:80 -p 8883:443 -d drupal

建立 TCP 代理虚拟网卡、使用 Nginx 代理 TCP/IP 流量通讯、将要转发代理的容器加入虚拟网卡: 

docker network create tcpproxy   
docker network connect tcpproxy nginxproxy   
docker network connect tcpproxy dravenkblog  

建立数据库虚拟网卡、将数据库容器加入数据库虚拟网卡,将需要使用数据库的容器加入虚拟网卡: 

docker network create databaseconnection 
docker network connect databaseconnection mysql 
docker network connect databaseconnection dravenkblog

查看虚拟网卡中 MySQL 中的网络,填入配置文件并使用该网卡地址与 MySQL 通讯 :

docker inspect databaseconnection 
vim root/myspace/myblog/sites/default/settings.php

查看 TCP 代理虚拟网卡地址:  

docker network inspect tcpproxy  

编辑 Ningx 配置文件 :

vim conf.d/myblog.conf

示例内容如下:  

upstream longxianwen.net {
             server 172.18.0.3:80;
         }
server {
        listen 80;
        server_name longxianwen.net;
        location / {
          proxy_pass http://longxianwen.net;
        }
}

重启 Nginx 容器使配置生效:  

docker restart nginxproxy

 

Reference:  

http://longxianwen.net/node/63/

https://hub.docker.com/_/nginx/

https://hub.docker.com/_/mysql/

https://hub.docker.com/_/drupal/

https://docs.docker.com/engine/reference/commandline/run/