Docker Laraval + PHPMyAdmin

该文详细介绍了如何使用Docker搭建包含Nginx、PHP-FPM、MariaDB、Redis的LNMP环境。涉及步骤包括复制配置文件到本地、启动容器、安装PHP扩展如mysqli、redis和swoole,以及配置Nginx服务器,特别是Laravel应用的配置。还提到了phpMyAdmin的配置和Composer的使用,以及Redis容器的启动与安全设置。
摘要由CSDN通过智能技术生成

本地工作目录

nginx/
    nginx.conf
    conf.d/
php/
    php-fpm.conf
    php.ini
mariadb/
    conf/
    data/
redis/
    data/
    redis.conf
wwwroot/
    myapp/
    phpmyadmin/
logs/
    nginx/
    php/
    mariadb/

Network

docker network create lnmp

PHP:8.2.3-fpm

先启动临时容器并复制配置文件到本地

docker run -d --name temp php:8.2.3-fpm
docker cp temp:/usr/local/etc 本地目录

然后再启动 nginx 容器,其中 phpfpm 会在容器的 hosts 中绑定为容器的IP

多行版:好像只能一行行复制到终端里,主要是行尾的斜杠不行

docker run -d \                                                       
-v /Users/iguoji/Desktop/docker/single/wwwroot:/home/wwwroot \
-v /Users/iguoji/Desktop/docker/single/php:/usr/local/etc \
-v /Users/iguoji/Desktop/docker/single/logs/php:/usr/local/log \
--network lnmp \
--name phpfpm \
php:8.2.3-fpm

一行版:推荐

docker run -d -v /Users/iguoji/Desktop/docker/single/wwwroot:/home/wwwroot -v /Users/iguoji/Desktop/docker/single/php:/usr/local/etc -v /Users/iguoji/Desktop/docker/single/logs/php:/usr/local/log --network lnmp --name phpfpm php:8.2.3-fpm

安装 mysqli 扩展,phpMyAdmin 需要

docker exec -it phpfpm /bin/bash
docker-php-ext-configure mysqli
docker-php-ext-install mysqli
exit
docker container restart phpfpm

安装 redis 扩展

docker exec -it phpfpm /bin/bash
pecl install redis
docker-php-ext-enable redis

安装 swoole 扩展

docker exec -it phpfpm /bin/bash
pecl install swoole
docker-php-ext-enable swoole

Nginx:latest

先启动临时容器并复制配置文件到本地

docker run -d --name temp nginx:latest
docker cp temp:/etc/nginx/nginx.conf 本地目录/nginx.conf
docker cp temp:/etc/nginx/conf.d 本地目录/conf.d

然后再启动 nginx 容器,其中 nginx 会在容器的 hosts 中绑定为容器的IP

多行版:好像只能一行行复制到终端里,主要是行尾的斜杠不行

docker run -d \
-v /Users/iguoji/Desktop/docker/single/wwwroot:/home/wwwroot:ro \
-v /Users/iguoji/Desktop/docker/single/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /Users/iguoji/Desktop/docker/single/nginx/conf.d:/etc/nginx/conf.d:ro \
-v /Users/iguoji/Desktop/docker/single/logs/nginx:/var/log/nginx \
-p 80:80 \
--network lnmp \
--name nginx \
nginx:latest

一行版:推荐

docker run -d -v /Users/iguoji/Desktop/docker/single/wwwroot:/home/wwwroot:ro -v /Users/iguoji/Desktop/docker/single/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /Users/iguoji/Desktop/docker/single/nginx/conf.d:/etc/nginx/conf.d:ro -v /Users/iguoji/Desktop/docker/single/logs/nginx:/var/log/nginx -p 80:80 --network lnmp --name nginx nginx:latest

最后以 laravel 配置为例,核心点在 rootfastcgi_pass 这两行

server {
    listen 80;
    listen [::]:80;
    server_name myapp.com;
    root /home/wwwroot/myapp/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass phpfpm:9000;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

phpMyAdmin 的话,只需要将复制上例配置文件,将其中的 root 设置为正确目录即可

Composer

docker exec -it phpfpm /bin/bash
curl -o composer.phar https://mirrors.aliyun.com/composer/composer.phar
mv composer.phar /usr/local/bin/composer
cd /usr/local/bin/
chmod 777 composer
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Redis

先启动临时容器并查看 redis 版本

docker run -d --name temp redis:latest
docker exec temp redis-cli -v

再去 redis官网配置文件列表 查看对应的配置文件

并下载到本地 本地目录/redis/redis.conf

记得设置密码 requirepass 123456

然后再启动 redis 容器,其中 redis 会在容器的 hosts 中绑定为容器的IP

docker run -d \
-v /Users/iguoji/Desktop/docker/single/redis/data:/data \
-v /Users/iguoji/Desktop/docker/single/redis/redis.conf:/usr/local/etc/redis/redis.conf \
--network lnmp \
--name redis \
redis:latest redis-server /usr/local/etc/redis/redis.conf --save 60 1 --loglevel warning

MariaDB

代码中连接到数据库时,服务器地址填写 mariadb

docker run -d \
-v /Users/iguoji/Desktop/docker/single/mariadb/data:/var/lib/mysql \
-v /Users/iguoji/Desktop/docker/single/logs/mariadb:/var/log/mysql \
-v /Users/iguoji/Desktop/docker/single/mariadb/conf:/etc/mysql/conf.d \
-e MARIADB_ROOT_PASSWORD=123456 \
--network lnmp \
--name mariadb \
mariadb:latest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值