使用laradock在一台服务器部署多个Web Server
前言
为什么使用docker?
部署快 性能好
安全性高
容器与宿主机完全隔离,默认情况下不能相互访问。
同时支持多版本软件
可以支持多版本PHP、Node等环境共存
目的:
搭建laravel和node环境,部署多个web server并上线
话不多说,直接上步骤。
STEP 1 安装docker
1 | curl -sSL https://get.daocloud.io/docker | sh |
Centos7 请执行这步
1 | yum install -y docker-engine |
ubuntu 请执行这步
1 | sudo apt-get install -y -q docker-engine |
STEP 2 安装docker-compose (ubuntu 请注意权限问题)
1 | curl -L https://get.daocloud.io/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
STEP 3 下载laradock
请确保git 可用
1 | git clone https://github.com/Laradock/laradock.git |
.env 配置说明
APP_CODE_PATH_HOST=../wwwroot
DATA_PATH_HOST=../wwwroot/data
WORKSPACE 配置项
1 | NODE=true |
PHP_FPM配置说明
1 | PHP_FPM_INSTALL_XDEBUG=false |
STEP 4 修改dns以及端口
因为node的原因,没法全挂在80端口上。所以每个项目使用一个端口,再用 Nginx 配置了一个多服务结构,根据访问域名转发请求,达到通过不同的域名来访问不同的Web Server的效果。
example structure

去域名管理商那里分配你的域名,当然都是 A 记录并全部解析到你的 云主机公网 IP 上。
另外一个准备就是修改你所有的 Web Server 的端口,可以按你的爱好设置,但是不要占用 80 以及 443 端口
STEP 5 新建forward.conf
切换到你的nginx 配置目录
cd nginx/sites
这里要说明 nginx 是拥有 Include 机制的,他会自动加载 sites 目录下的所有 _.conf_(默认配置下) ,所以我们并不需要修改 nginx.conf 文件。我们接下来需要在 sites 目录下创建一系列的配置文件,文件名请使用你相应的工程名
example: yourname.conf
让我们编写详细的转发规则
新建一份forward.conf
1 | // 假设我已经将这个服务的端口改成了5000端口 |
如果你需要转发 HTTPS,请复制一份上面的内容粘贴到下面,修改监听端口为 443,转发端口就是你监听的 https 端口!
STEP 6 修改yourname.conf
新建一份yourname.conf然后修改成
1 | server { |
TIPS:一个坑
laradock下docker-compose运行nginx 和 FPM 的默认启动用户都是 1000,所以你的网站根目录请务必修改所属者为 1000,否则laravel会出现权限问题!
STEP 7 Repeat
重复 6 7 步骤,创建所有你需要的项目配置
STEP 8 修改dockerfile、docker-composer.yml、.env
cd ..
vi dockerfile
1 | EXPOSE 80 443 5000 |
cd ..
vi docker-compose.yml
1 | ### NGINX Server ######################################### |
vi .env
1 | ### NGINX ################################################# |
STEP 9 启动 nginx redis mysql
1 | docker-compose up -d --build nginx redis mysql |
如果出现报错,仔细查看信息
1 | docker-compose logs nginx |
一般都是因为配置文件格式错误。
只重启nginx(比如修改了配置文件)
1 | docker-compose restart nginx |
可以根据自己需要自行启动 nginx/apache/mysql/phpmyadmin/redis 等
STEP 10 工作空间
进入工作空间前,请确认环境已经启动
1 | docker-compose exec workspace bash |
需要注意的是:
由于数据库的数据是映射到 wwwroot/data 目录,
所以在.env 修改数据库密码,即使重新构建也无效。
如需强制更改 请删除wwwroot/data 里面对应数据库的数据。
日常修改密码,请使用bash 或者 phpmyadmin
STEP 11 运行网页
打开你的网站吧,应该可以正常运行了!以后新增 Server 其实也只要增加一个对应的 conf 文件,可以很方便的横向扩展,并且整个网站访问起来也会比较美观!
example:http://lees.work
