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,代码如下:

<?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
#github
git 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.5
nameserver 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.conf
server {

    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.php
All settings correct for using Composer
Downloading...
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 。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值