欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑

 更新時(shí)間:2022年08月07日 15:41:57   作者:1個(gè)俗人  
本文主要介紹了Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

準(zhǔn)備

創(chuàng)建目錄

mkdir -p /Users/mwqnice/Documents/Program/phpProgram &&
mkdir -p /Users/mwqnice/Documents/Program/docker/php/php7.1.33/conf &&
mkdir -p /Users/mwqnice/Documents/Program/docker/php/php7.1.33/logs &&
mkdir -p /Users/mwqnice/Documents/Program/docker/nginx/conf.d &&
mkdir -p /Users/mwqnice/Documents/Program/docker/mysql/conf &&
mkdir -p /Users/mwqnice/Documents/Program/docker/mysql/logs &&
mkdir -p /Users/mwqnice/Documents/Program/docker/mysql/data &&
cd /Users/mwqnice/Documents/Program/docker/nginx/conf.d && sudo touch default.conf

配置PHP

拉取php-fpm鏡像

docker pull php:7.1.33-fpm #版本7.1.33

啟動(dòng)php-fpm

docker run --name  mwq-php \
-v /Users/mwqnice/Documents/Program/phpProgram:/var/www/html \
-v /Users/mwqnice/Documents/Program/docker/php/php7.1.33/conf:/usr/local/etc/php \
-v /Users/mwqnice/Documents/Program/docker/php/php7.1.33/logs:/phplogs \
-d --link mwq-php php:7.1.33-fpm

--name mwq-php是容器的名字

/Users/mwqnice/Documents/Program/phpProgram是本地項(xiàng)目目錄,/var/www/html是容器內(nèi)項(xiàng)目存儲(chǔ)目錄

配置Nginx

拉取Nginx鏡像

docker pull nginx:latest //拉取最新版本

配置nginx.conf

server {
    listen  80;
    server_name localhost;
    set $root /var/www/html/localhost;
    
    #access_log  /tmp/nginx/logs/localhost.net.access.log main;
    #error_log  /tmp/nginx/logs/localhost.net.error.log notice;

    location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root $root;
    }

    location / {
        root $root;
        index  index.php index.html index.htm;
        if ( -f $request_filename) {
            break;
        }
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php/$1 last;
            break;
        }
    }

    location ~ .php(.*)$ {
        root $root;
        set $script $uri;
        set $path_info "";
        if ($uri ~ "^(.+.php)(/.+)") {
            set $script $1;
            set $path_info $2;
        }
        fastcgi_pass mwq-php:9000;
        #fastcgi_index index.php;
        fastcgi_index    index.php?IF_REWRITE=1;
        fastcgi_param    PATH_INFO    $path_info;
        fastcgi_param    SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param    SCRIPT_NAME    $script;
        include          fastcgi_params;

    }

    location ~ /.ht {
        deny  all;
    }
    location ~ /.svn {
        deny  all;
    }
    location ~ /.git/ {
        deny  all;
    }
    location ~ /Logs/ {
        deny  all;
    }
    location ~ /Logs/.* {
    }
    location ~ /Logs/.* {
        deny  all;
    }
    location ~ .*.(sql|tar.gz|zip|gz|tar|rariso|rpm|apk|bak)$ {
        deny  all;
    }
  
}

啟動(dòng)Nginx

docker run --name mwq-nginx -p 80:80 -d \
-v /Users/mwqnice/Documents/Program/phpProgram:/var/www/html:ro \
-v /Users/mwqnice/Documents/Program/docker/nginx/conf.d:/etc/nginx/conf.d:ro \
--link mwq-php:php \
nginx

配置MySQL

拉取MySQL鏡像

docker pull mysql:5.7.36 #版本5.7.36

啟動(dòng)MySQL

docker run -p 3306:3306 --name mwq-mysql \
-v /Users/mwqnice/Documents/Program/docker/mysql/conf:/etc/mysql/conf.d \
-v /Users/mwqnice/Documents/Program/docker/mysql/logs:/logs \
-v /Users/mwqnice/Documents/Program/docker/mysql/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.36
  • -p 3306:3306: 將容器的3306端口映射到主機(jī)的3306端口
  • -v /Users/mwqnice/Documents/Program/docker/mysql/conf:/etc/mysql 將主機(jī)/Users/mwqnice/Documents/Program/docker/mysql/conf目錄掛載到容器的/etc/mysql
  • -e MYSQL_ROOT_PASSWORD=123456: 初始化root用戶的密碼
  • -d: 后臺(tái)運(yùn)行容器,并返回容器ID

常見問題

1、thinkphp報(bào)錯(cuò) Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

缺少pdo_mysql擴(kuò)展,連接數(shù)據(jù)庫失敗

找到php.ini,docker中在/usr/local/etc/php中,復(fù)制一份php.ini,增加extension=pdo_mysql.so,重啟php-fpm,如果還是不行,訪問phpinfo頁面,查看是否有pdo_mysql

如果沒有,說明沒有pdo_mysql擴(kuò)展,需要編譯

編譯方法如下:

到docker的php容器中,在php文件夾下:

docker-php-ext-install pdo pdo_mysql

如果報(bào) /usr/local/bin/docker-php-ext-enable: cannot create /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini: Directory nonexistent

解決方案:直接在/usr/local/etc/php目錄下面新建 conf.d目錄和對應(yīng)的docker-php-ext-pdo_msql.ini文件

其中docker-php-ext-pdo_msql.ini的內(nèi)容為:

extension=pdo_mysql.so

2、thinkphp 報(bào)錯(cuò) STORAGE_WRITE_ERROR:./Application/Runtime/Cache/Home/4e64ea6a2012f26b832b14cbc2152b28.php

是因?yàn)榉?wù)器緩存文件夾的操作權(quán)限不夠,即Runtime沒有權(quán)限,把緩存文件全部刪除,再給Runtime777權(quán)限就行了

sudo chmod 777 Runtime 或者直接對代碼庫最外層設(shè)置777權(quán)限

3、thinkphp驗(yàn)證碼圖片顯示不出來

缺少gd擴(kuò)展,安裝:

docker-php-ext-install gd

可能以下報(bào)錯(cuò):

If configure fails try --with-webp-dir=<DIR>
If configure fails try --with-jpeg-dir=<DIR>
configure: error: png.h not found.

安裝:

apt-get install libpng-dev libjpeg-dev

再次執(zhí)行:

// 增加freetype配置
docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include --with-jpeg-dir=/usr/include

// 安裝
docker-php-ext-install gd

php.ini增加php_gd2.so

phpinfo中顯示gd庫

注意如果phpinfo的gd庫中沒有freetype的支持,驗(yàn)證碼依然顯示不出來, 會(huì)報(bào)錯(cuò):

Call to undefined function Think\imagettftext()

如果gd庫中沒有freeType,則按照以下步驟進(jìn)行:

docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include 

重新編譯:

docker-php-ext-install gd

如果報(bào)錯(cuò): configure: error: freetype-config not found. 運(yùn)行:

apt-get -y install libfreetype6-dev

然后再繼續(xù)運(yùn)行上面的命令。gd庫中有了freetype,則驗(yàn)證碼顯示正常了

到此這篇關(guān)于Docker快速搭建PHP+Nginx+Mysql環(huán)境及踩坑 的文章就介紹到這了,更多相關(guān)Docker搭建PHP Nginx Mysq內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Docker部署Nginx+Flask+Mongo的應(yīng)用

    使用Docker部署Nginx+Flask+Mongo的應(yīng)用

    這篇文章主要介紹了使用Docker部署Nginx+Flask+Mongo的應(yīng)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • 在docker中安裝mysql詳解

    在docker中安裝mysql詳解

    本篇文章主要介紹了在docker中安裝mysql詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • MySQL容器中docker-entrypoint-initdb.d目錄的使用

    MySQL容器中docker-entrypoint-initdb.d目錄的使用

    這篇文章主要介紹了MySQL容器中docker-entrypoint-initdb.d目錄的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • docker限制容器內(nèi)存的方法詳解

    docker限制容器內(nèi)存的方法詳解

    在服務(wù)器中使用 docker 時(shí),如果不對 docker 的可調(diào)用內(nèi)存進(jìn)行限制,當(dāng) docker 內(nèi)的程序出現(xiàn)不可預(yù)測的問題時(shí),就很有可能因?yàn)閮?nèi)存爆炸導(dǎo)致服務(wù)器主機(jī)的癱瘓,本文將介紹使用 docker 進(jìn)行容器內(nèi)存限制的方法,感興趣的朋友一起看看吧
    2023-11-11
  • docker?run容器運(yùn)行的方法實(shí)現(xiàn)

    docker?run容器運(yùn)行的方法實(shí)現(xiàn)

    本文主要介紹了docker?run容器運(yùn)行的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Dockerfile文件編寫實(shí)戰(zhàn)練習(xí)及注意事項(xiàng)

    Dockerfile文件編寫實(shí)戰(zhàn)練習(xí)及注意事項(xiàng)

    Dockerfile?是一個(gè)用于構(gòu)建?Docker?鏡像的文本文件,通過一系列指令來定義鏡像的構(gòu)建過程,這篇文章主要介紹了Dockerfile文件編寫實(shí)戰(zhàn)練習(xí)及注意事項(xiàng)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • docker安裝RabbitMQ詳細(xì)步驟

    docker安裝RabbitMQ詳細(xì)步驟

    大家好,本篇文章主要講的是docker安裝RabbitMQ詳細(xì)步驟,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Docker使用格式化輸出與排序的技巧分享

    Docker使用格式化輸出與排序的技巧分享

    Docker 作為當(dāng)今最流行的容器化技術(shù)之一,其命令行工具提供了強(qiáng)大的功能來管理容器鏡像,本文給大家介紹了Docker使用格式化輸出與排序的技巧,需要的朋友可以參考下
    2025-05-05
  • 在Linux系統(tǒng)中安裝Docker的過程

    在Linux系統(tǒng)中安裝Docker的過程

    這篇文章主要介紹了如何在Linux系統(tǒng)中安裝Docker,其實(shí)安裝docker真的很簡單,只需要幾條命令就可以完成了,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • docker安裝MinIO全過程

    docker安裝MinIO全過程

    Minio是一個(gè)高性能的面向?qū)ο蟠鎯?chǔ)服務(wù),使用Go語言編寫,支持跨平臺(tái),本文介紹了如何使用Docker安裝Minio,并通過配置用戶名密碼、創(chuàng)建Bucket和上傳圖片進(jìn)行簡單的存儲(chǔ)操作
    2024-12-12

最新評(píng)論