Mac 使用docker搭建PHP環(huán)境

1. 下載docker Desktop 使用最新版

2. 下載php 7.2

docker pull arodax/php7.2-fpm

啟動php-fpm

docker run --name php-fpm -p 9000:9000 -v /var/data/php/conf:/usr/local/etc/php/conf.d -v /var/data:/data/wwwroots -it -d arodax/php7.2-fpm

3. 下載nginx

docker pull nginx

啟動Nginx鏡像

docker run --name nginx -p 80:80 -v /var/data/:/data/wwwroots -v /var/data/nginx/conf:/etc/nginx/conf.d -it -d nginx
image.png

查看容器是否啟動

image.png

容器啟動成功

在瀏覽器打看試試

結(jié)果顯示錯誤

這是什么問題??

開始排錯

3.1 進入容器看看掛載是否成功

 docker exec -it 2ca2b1fecbbd  /bin/bash
ls /data/wwwroots/
image.png

文件掛載成功

3.2 第一個考慮是沒有配置文件
設(shè)置一個配置文件

server {
  listen  80;
  server_name local.com;
  root   /data/wwwroots;

  location / {
   index index.html index.htm index.php;
  }

  location ~ \.php(.*)$ {
   fastcgi_pass 172.17.0.2:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include  fastcgi_params;
  }
}

文件存儲在宿主機的位置
nginx掛載文件設(shè)置 /var/data/nginx/conf:/etc/nginx/conf.d

/var/data/nginx/conf

查看nginx容器是否成功掛載配置文件

Liangrongze2019:Downloads h$ docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED         STATUS         PORTS                NAMES
4b44f7d6beef   nginx                         "/docker-entrypoint.…"   9 seconds ago   Up 8 seconds   0.0.0.0:80->80/tcp   nginx
0b7b440225fd   binhle410/php7.2-fpm:latest   "docker-php-entrypoi…"   11 hours ago    Up 11 hours    9000/tcp             gracious_darwin
Liangrongze2019:Downloads h$ docker exec -it 4b44f7d6beef  /bin/bash       
root@4b44f7d6beef:/# ls /etc/nginx/conf.d/ 
root@4b44f7d6beef:/# ls /etc/nginx/conf.d/           
local.conf  st.conf

成功掛載文件

預(yù)覽測試html

image.png

預(yù)覽測試php

image.png

無法解釋php文件,配置文件還需要修改。應(yīng)該是php fpm地址錯誤。

先找到php-fpm的ip地址

Liangrongze2019:Downloads h$ docker inspect --format='{{.NetworkSettings.IPAddress}}' php-fpm
172.17.0.2

修改nginx的配置文件

fastcgi_pass 172.17.0.2:9000;
image.png

測試成功!

4. 安裝PHP拓展

4.1 查看有沒有ext目錄

Liangrongze2019:Downloads h$ docker exec -it 53a96c2da8c8 /bin/bash
root@53a96c2da8c8:/var/www/html# cd /usr/src/
root@53a96c2da8c8:/usr/src# ls
php  php.tar.xz  php.tar.xz.asc
root@53a96c2da8c8:/usr/src# cd php
root@53a96c2da8c8:/usr/src/php# ls
CODING_STANDARDS  Makefile.global       README.RELEASE_PROCESS        README.input_filter  appveyor       ext          makedist         run-tests.php        travis
CONTRIBUTING.md   NEWS              README.SELF-CONTAINED-EXTENSIONS  README.md        build          footer           missing          sapi             vcsclean
CREDITS       README.EXT_SKEL       README.STREAMS            TSRM             buildconf      generated_lists  mkinstalldirs        scripts          win32
EXTENSIONS    README.GIT-RULES      README.SUBMITTING_PATCH       UPGRADING        buildconf.bat  genfiles         pear         server-tests-config.php
INSTALL       README.MAILINGLIST_RULES  README.TESTING            UPGRADING.INTERNALS  config.guess   header           php.gif          server-tests.php
LICENSE       README.NEW-OUTPUT-API     README.TESTING2           Zend             config.sub     install-sh       php.ini-development  snapshot
Makefile.frag     README.PARAMETER_PARSING_API  README.UNIX-BUILD-SYSTEM      acinclude.m4         configure      ltmain.sh        php.ini-production   stamp-h.in
Makefile.gcov     README.REDIST.BINS        README.WIN32-BUILD-SYSTEM     aclocal.m4           configure.ac   main         php7.spec.in     tests

如果沒有,就需要創(chuàng)建

docker-php-source extract

如果ext目錄已經(jīng)存在需要安裝擴展的源碼,就直接安裝

docker-php-ext-install gd

如果ext目錄沒有擴展源碼,就需要使用另外一種方式安裝。
以安裝mcrypt為例
// redis 源碼 http://pecl.php.net/get/redis-4.0.2.tgz

root@53a96c2da8c8:/usr/src/php/ext# cd /tmp/
root@53a96c2da8c8:/tmp# wget http://pecl.php.net/get/mcrypt-1.0.1.tgz
--2022-04-18 03:19:08--  http://pecl.php.net/get/mcrypt-1.0.1.tgz
Resolving pecl.php.net (pecl.php.net)... 104.236.228.160
Connecting to pecl.php.net (pecl.php.net)|104.236.228.160|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33782 (33K) [application/octet-stream]
Saving to: 'mcrypt-1.0.1.tgz'

mcrypt-1.0.1.tgz                                   100%[================================================================================================================>]  32.99K  29.8KB/s    in 1.1s    

2022-04-18 03:19:11 (29.8 KB/s) - 'mcrypt-1.0.1.tgz' saved [33782/33782]

root@53a96c2da8c8:/tmp# ls
mcrypt-1.0.1.tgz  pear
root@53a96c2da8c8:/tmp# tar -zxf mcrypt-1.0.1.tgz 
root@53a96c2da8c8:/tmp# ls
mcrypt-1.0.1  mcrypt-1.0.1.tgz  package.xml  pear
root@53a96c2da8c8:/tmp# mv mcrypt-1.0.1 /usr/src/php/ext/
root@53a96c2da8c8:/tmp# ls
mcrypt-1.0.1.tgz  package.xml  pear
root@53a96c2da8c8:/tmp# mv /usr/src/php/ext/mcrypt-1.0.1/ /usr/src/php/ext/mcrypt       
root@53a96c2da8c8:/tmp# docker-php-ext-install mcrypt

root@53a96c2da8c8:/tmp# php -m | grep mcrypt
mcrypt

重啟php-fpm容器,就可以在web服務(wù)器查看已經(jīng)加載。

image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容