我的環境:Ubuntu 16.04.4、Docker version 18.06.1-ce、docker-compose version 1.18.0、git version 2.7.4
工作目錄統一在/wwwroot下
1、先建立一個用來做負載均衡nginx
進入/wwwroot建立nginx目錄
進入nginx目錄docker pull nginx:alpine
docker run -it --name testnginx -p 80:80 -d nginx:alpine
把裡面的預設檔案copy出來nginx.confdocker cp testnginx:/etc/nginx/nginx.conf nginx.conf
docker rm -f testnginx
重新執行一個容器
docker run -p 80:80 --name nginx -v $PWD/conf.d:/etc/nginx/conf.d -v $PWD/nginx.conf:/etc/nginx/nginx.conf -d nginx:alpine
進入nginx目錄下的conf.d目錄建立default.conf
server {
listen 80;
server_name localhost;
root /www;
index index.php index.html index.htm;
location / {
}
}
加入如上配置
進入 nginx目錄下的www目錄 新建index.html 加入"welcome to nginx!"
重啟nginx 容器 docker restart nginx
然後訪問你的地址
2、克隆一套nginx+php+mysql+redis環境(安裝環境請參考https://learnku.com/articles/24594)
git clone https://github.com/MichealJl/dnmp.git
3、進入目錄dnmp(為了方便記憶將目錄名改為dnmp1)
mv env-example .env
編輯docker-compose.yml檔案 刪除掉php5.6和gogs
為了快速安裝,修改env檔案將php的一些擴充套件 :swoole和IMAGEMAGICK置為false
修改env檔案中nginx 對外暴露的埠為81 NGINX_HTTP_PORT=81
docker-compose up -d
進入 nginx的project目錄建立index.php輸出 phpinfo();
訪問你的81埠
4、再複製2份dnmp 作為節點
cp -r dnmp1 dnmp2
現在的情況是這樣
進入dnmp2和dnmp3修改env檔案 將nginx、php、redis和mysql對外的埠修改一下不要相同即可
我是在之前的埠基礎上挨個+1的
然後都執行docker-compose up -d
檢視現在容器的執行情況
然後分別訪問3個埠都會看到phpinfo
為了區分 分別修改project裡的index.php檔案
5、修改 /wwwroot/nginx/nginx.conf
再修改nginx目錄下conf.d/default.conf
然後訪問你的ip就會看到負載均衡的效果
6、加入laravel專案測試
1、分別進入三個節點對應的mysql容器
docker exec -it dnmp1_mysql_1 /bin/bash
docker exec -it dnmp2_mysql_1 /bin/bash
docker exec -it dnmp3_mysql_1 /bin/bash
登入mysql 建立測試資料 因為這裡安裝的是mysql8所以需要修改下root使用者的密碼認證方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
create database test;
use test;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'zhangsan');
INSERT INTO `user` VALUES ('2', 'lisi');
INSERT INTO `user` VALUES ('3', 'wangermazi');
flush privileges;
2、 分別進入三個節點對應的php容器
docker exec -it dnmp1_php-fpm72_1 /bin/bash
docker exec -it dnmp2_php-fpm72_1 /bin/bash
docker exec -it dnmp3_php-fpm72_1 /bin/bash
進入容器後 進入/www目錄 然後安裝 laravel
3、分別修改三個節點對應的nginx目錄下的default.conf 指向laravel目錄
4、然後重啟三個節點的nginx
docker restart dnmp1_nginx_1
docker restart dnmp2_nginx_1
docker restart dnmp3_nginx_1
5、 在三個laravel專案中建立User控制器和模型
例:
docker exec dnmp1_php-fpm72_1 bash -c "cd /www/laravel/ && php artisan make:controller UserController"
docker exec dnmp1_php-fpm72_1 bash -c "cd /www/laravel/ && php artisan make:model Models/User"
後面兩個請自行修改容器名稱建立
6、 修改模型並在控制器中新增方法
模型中關聯表名
在api裡新增路由
7、修改.env檔案中的DB引數
後邊兩個專案照樣複製就行
效果如下