docker部署laravel
知识铺垫
首先拉取官方镜像,标签为 8.2-fpm
使用命令 docker pull php:8.2-fpm 拉取镜像
启动 php 容器
使用命令
docker run --name myphp-fpm -v /root/nginx/www:/www -itd php:8.2-fpm
其中 --name myphp-fpm : 将容器命名为 myphp-fpm
-v /root/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www
创建目录 mkdir -p /root/nginx/conf/conf.d
在该目录下添加 /root/nginx/conf/conf.d/test-php.conf 文件,内容如下:
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; }}
配置文件说明:
php:9000: 表示 php-fpm 服务的 URL。
/www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 /root/nginx/www 目录。
启动 nginx 容器
docker run --name php-nginx -p 8088:80 -d \ -v /root/nginx/www:/usr/share/nginx/html:ro \ -v /root/nginx/conf/conf.d:/etc/nginx/conf.d:ro \ --link myphp-fpm:php \ nginx
参数说明
-p 8088:80: 端口映射,把 nginx 中的 80 映射到本地的 8088 端口。
~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
–link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
接下来我们在 /root/nginx/www 目录下创建 index.php,代码如下:
echo phpinfo();
?>
访问域名,可成功访问表示环境配置成功
docker 安装 mysql
使用命令
docker pull mysql:latest
拉取 mysql 最新版本镜像
使用命令
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
运行容器
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机 ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456
:设置 MySQL 服务 root 用户的密码。
可以使用命令 docker exec -it mysql-test mysql -hlocalhost -uroot -p 访问 mysql 容器
创建远程访问账号
CREATE USER ‘test‘@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
账号授权:
GRANT ALL PRIVILEGES ON . TO ‘test‘@’%’;
刷新权限:
FLUSH PRIVILEGES;
使用连接工具测试可连接成功
正式开始啦
laradock 配置开发环境
1. 克隆 laradock 包到本地指定文件夹(与项目同级)
官方网站:laradock.io
#码云git clone https://gitee.com/anviod/laradock.git#githubgit clone https://github.com/Laradock/laradock.git
2. 进入 laradock 目录将 .env.example 重命名为 .env
3. 执行命令 docker-compose up -d nginx workspace 运行容器
这里需要注意:请求raw.githubusercontent.com超时,改Hosts并无法解决问题。这里我们需要vim/etc/resolv.con改为阿里云DNS解决问题。
nameserver 223.5.5.5nameserver 223.6.6.6
Laravel部署使用时有最低版本要求的,如果安装的版本不兼容。不变更Laravel那就需要重构nginx、workspace;
重构办法如下:
修改laradock目录下的.env文件,这里把PHP_VERSION改为Laravel支持的版本。
接下来执行重构
docker-compose build nginx docker-compose build workspace
一段时间完成后,再执行
docker-compose up -d nginx workspace
运行完成后可通过 docker ps 命令查看一下容器运行情况
4. 配置访问域名
我们需要到 laradock 下编辑 .env 中的 APP_CODE_PATH_HOST 配置项
APP_CODE_PATH_HOST=../wwwroot/
laradock目录下
─(root㉿kali)-[~/nginx/www/laradock]└─# vim /nginx/sites/default.confserver { listen 80 default_server; listen [::]:80 default_server ipv6only=on; # For https # listen 443 ssl default_server; # listen [::]:443 ssl default_server ipv6only=on; # ssl_certificate /etc/nginx/ssl/default.crt; # ssl_certificate_key /etc/nginx/ssl/default.key; server_name localhost;#这里/var/www/相当于在laradock下,.env中设置的../wwwroot目录 root /var/www/detection/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass php-upstream; fastcgi_index index.php;
这样就相当于为 wwwroot 与 Docker 的 /var/www 目录建立了软链接.
5. 在 laradock workspace添加 laravel 项目
进入 laradock 目录,执行命令
docker-compose exec workspace bash
进入 Workspace 容器
workspace容器里面安装composer
# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"# php composer-setup.phpAll settings correct for using ComposerDownloading...Composer (version 1.6.5) successfully installed to: /root/composer.phar移动 composer.phar,这样 composer 就可以进行全局调用:# mv composer.phar /usr/local/bin/composer切换为国内镜像:# composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/更新 composer:# composer selfupdate
在容器中使用 Composer 安装 Laravel 安装器
composer create-project laravel/laravel mylaravel "9.33.*"
接下来,需要重启 Docker 的 Nginx:
docker-compose up -d nginx
配置完成后通过端口访问可正常访问,配置成功啦
这里我们设置的场景是新建一个应用,如果是多个应用在上述 wwwroot 目录下创建多个应用目录, laradock/nginx/sites 下对应创建多个配置文件,不要忘记在系统 /etc/hosts 中配置相关域名绑定 IP 。
来源地址:https://blog.csdn.net/flamevip/article/details/130018594
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341