mac环境下使用Docker 安装lnmp 并运行laravel项目
1. 安装mysql
docker search mysql
这里我们指定mysql版本
docker pull mysql:5.7
安装完成 docker images 查看一下
然后运行mysql生成容器
docker run -itdp 3306:3306 -e MYSQL_ROOT_PASSWORD=123123 --name mysql5.7 mysql:5.7
##进入mysql容器依次执行
docker exec -it mysql5.7 /bin/bash
mysql -uroot -p123123
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;
exit
2. 安装php
docker pull php:7.3-fpm
docker run -itdp 9000:9000 -v /usr/local/var/www:/var/www --link mysql5.7:php-fpm7.3-mysql5.7 --name php-fpm7.3 php:7.3-fpm
## 9000:9000 容器与本地开放端口
## -v 指定项目挂载目录,我本地mac安装的nginx 对应的web目录为/usr/local/var/www,php容器内目录为/var/www
##--link 指定连接容器,这里是连接mysql容器,mysql5.7为镜像名,php-fpm7.3-mysql5.7为连接别名
##--name 容器别名为php-fpm7.3
docker exec -it php-fpm7.3 /bin/bash
##进入容器
## php -m 发现一些必要的php扩展缺失 比如pdo_mysql 等
执行以下命令安装php扩展
apt-get update && apt-get install -y --no-install-recommends libpq-dev && rm -r /var/lib/apt/lists/* && docker-php-ext-install -j$(nproc) pdo_mysql pgsql pdo_pgsql
3. 安装nginx
ngnix不建议安装在docker里面 直接mac本地安装即可
brew install nginx
本地nginx配置目录为 /usr/local/etc/nginx,配置修改nginx.conf ,配置虚拟主机在servers进行配置
本地执行命令启动nginx
brew services start nginx 或者 nginx
出现nginx.conf配置的目录页面即为成功
我配置的为
浏览器输入http://localhost:8080/ 可看到对应页面
4. 运行laravel项目
本身我已创建好自己的项目 v2.mapi 放在/usr/local/var/www
配置nginx虚拟主机 在servers 下创建test.conf
以下是我的nginx配置文件内容
server {
listen 80;
server_name xxx.com;
root html/xxx.v2.mapi/public;
#access_log logs/host.access.log main;
location ~ \.php$ {
root /var/www/7mate.v2.mapi/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
}
两个root 路径的路径分别为nginx服务在本地的项目路径 html即为/usr/local/var/www,和容器内的php服务的项目路径
fastcgi_pass 因为nginx不在容器内 所以为本地127.0.0.1
这里需要注意 laravel项目连接容器里的mysql ,需要使用的是容器局域网ip,可使用命令查看mysql对应容器的IP
docker inspect mysql5.7 | grep IPAddress
好了 配置完成 开启docker 对应的服务 以及nginx
用postman调用一下项目 ,查看结果,本地mac配置域名不做多说
好了 以上就是完整过程
5 小坑的点
安装php 挂载 到 本地/usr/local/var/www 会报错 因为在docker里面没有加入对应挂载目录 进入docker的设置中 加入挂载目录
还有本地安装完ngnix 有的会报403 这是因为配置nginx.conf目录下没有对应的index.html 之类的文件 创建即可