解析docker怎么搭建lnmp環境(php7.4 + nginx )

本篇文章給大家介紹一下linuxdocker的安裝方法,并詳細了解一下 docker 搭建 lnmp環境(php7.4 + nginx )的步驟,希望對大家有所幫助!

解析docker怎么搭建lnmp環境(php7.4 + nginx )

1. docker基礎

1.1 docker的安裝

docker的安裝非常簡單,我們可以直接使用centos系統中的yum命令進行安裝:

yum?install?-y?docker

完成后查看docker的版本信息:

立即學習PHP免費學習筆記(深入)”;

[root@localhost?docker]#?docker?version Client: ?Version:?????????1.13.1 ?API?version:?????1.26 ?Package?version:?docker-1.13.1-204.git0be3e21.el7.x86_64 ?Go?version:??????go1.10.3 ?Git?commit:??????0be3e21/1.13.1 ?Built:???????????Fri?Mar?19?13:57:09?2021 ?OS/Arch:?????????linux/amd64  Server: ?Version:?????????1.13.1 ?API?version:?????1.26?(minimum?version?1.12) ?Package?version:?docker-1.13.1-204.git0be3e21.el7.x86_64 ?Go?version:??????go1.10.3 ?Git?commit:??????0be3e21/1.13.1 ?Built:???????????Fri?Mar?19?13:57:09?2021 ?OS/Arch:?????????linux/amd64 ?Experimental:????false [root@localhost?docker]#

證明安裝完成,docker的命令如下:

systemctl?start?docker???#?啟動docker systemctl?stop?docker????#?停止docker systemctl?status?docker??#?查看docker狀態 systemctl?restart?docker?#?重新啟動docker

?sudo systemctl enable docker? #設置docker 開機自啟

在啟動之前我們需要修改docker的鏡像源:

[root@localhost?docker]#?vim?/etc/docker/daemon.json  { ??"registry-mirrors":?["https://ftnejmh3.mirror.aliyuncs.com"] }

完成后運行systemctl start docker,啟動docker服務。

2. docker搭建lnmp環境

環境軟件介紹:

1. docker

2. nginx

3. mysql

4. php7.4 【推薦學習:《PHP視頻教程》】

docker搭建的lnmp目錄結構:

docker │???└──?nginx │???│???└──?default.conf?#nginx配置文件 │???└──?www │???????└──?...??#項目代碼

2.1 docker搭建nginx

我們可以使用docker search nginx命令查找 Docker Hub 上的 nginx 鏡像,這里直接拉取官方的鏡像

[root@localhost?~]#?docker?pull?nginx

等待下載完成后,我們就可以在本地鏡像列表里查到 REPOSITORY 為 nginx 的鏡像。

[root@localhost?www]#?docker?images REPOSITORY???????TAG???????IMAGE?ID????????CREATED????????SIZE docker.io/nginx??latest????62d49f9bab67????12?days?ago????133?MB

創建nginx配置

[root@localhost?~]#?cd?/docker/nginx [root@localhost?~]#?touch?default.conf [root@localhost?~]#?vim?default.conf  server?{ ????listen???????80; ????listen??[::]:80; ????server_name??localhost; ????root?/docker/www/lmrs-2008/public; ????index?index.php?index.html;  ????location?/?{ ????????try_files?$uri?$uri/?/index.php?$query_string; ????}  ????error_page???500?502?503?504??/50x.html; ????location?=?/50x.html?{ ????????root???/docker/www/lmrs-2008/public; ????}  ????location?~?.php$?{ ????????root?/docker/www/lmrs-2008/public; ????????fastcgi_pass???172.17.0.3:9000;????//容器的ip地址 ????????fastcgi_index??index.php; ????????fastcgi_param??SCRIPT_FILENAME??$document_root$fastcgi_script_name; ????????include????????fastcgi_params; ????} }
fastcgi_pass???172.17.0.3:9000;

查看ip信息

[root@localhost?docker]#?docker?inspect?php?|?grep?"IPAddress" ????????????"SecondaryIPAddresses":?null, ????????????"IPAddress":?"172.17.0.3", ????????????????????"IPAddress":?"172.17.0.3",

使用nginx鏡像開啟nginx應用容器

[root@localhost?~]#?docker?run?-p?80:80?-d?--name?nginx?-v?/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf?-v?/docker/www:/docker/www??--privileged=true?nginx  -p?80:80:將容器的80端口映射到主機的80端口 -d?后臺運行(守護進程) --name?nginx:將容器命名為nginx -v?將主機中當前目錄下的www掛載到容器的www目錄  #查看docker目前的容器 [root@localhost?~]#?docker?ps CONTAINER?ID????????IMAGE???????????????COMMAND??????????????????CREATED?????????????STATUS??????????????PORTS???????????????????????????????NAMES 8781afd1bf13????????nginx???????????????"/docker-entrypoin..."???About?an?hour?ago???Up?17?minutes???????0.0.0.0:80->80/tcp??????????????????nginx

2.2 docker安裝php

和nginx一樣,我們可以先通過docker search php查找鏡像,這里直接拉取官方的鏡像,標簽為7.4-fpm,其他版本的可自行選擇

[root@localhost?~]#?docker?pull?php:7.4-fpm

等待下載完成后,我們就可以在本地鏡像列表里查到REPOSITORY為php,標簽為7.4-fpm的鏡像。

[root@localhost?docker]#?docker?images REPOSITORY??????????TAG?????????????????IMAGE?ID????????????CREATED?????????????SIZE docker.io/nginx?????latest??????????????62d49f9bab67????????12?days?ago?????????133?MB docker.io/php???????7.4-fpm?????????????41b17b0f90e6????????2?weeks?ago?????????405?MB

使用php鏡像開啟php-frm應用容器

[root@localhost?docker]#?docker?run?-p?9000:9000?-d?--name?php?-v?/docker/www:/docker/www?--privileged=true?php:7.4-fpm -p?9000:9000?:將容器的9000端口映射到主機的9000端口 -d?后臺運行(守護進程) --name?php:將容器命名為php -v?將主機中當前目錄下的www掛載到容器的www目錄

查看容器啟動情況

[root@localhost?docker]#?docker?ps?-a CONTAINER?ID????????IMAGE???????????????COMMAND??????????????????CREATED?????????????STATUS??????????????PORTS???????????????????????????????NAMES cbf73ca0f17c????????php:7.4-fpm?????????"docker-php-entryp..."???About?an?hour?ago???Up?About?an?hour????0.0.0.0:9000->9000/tcp??????????????php 8781afd1bf13????????nginx???????????????"/docker-entrypoin..."???About?an?hour?ago???Up?23?minutes???????0.0.0.0:80->80/tcp??????????????????nginx

到這里,可以看到nginx和php都運行成功(STATUS為up說明正在運行)

查看nginx配置的php-fpm服務ip是否一致:

location?~?.php$?{ ????root?/docker/www/lmrs-2008/public; ????fastcgi_pass???172.17.0.3:9000; ????fastcgi_index??index.php; ????fastcgi_param??SCRIPT_FILENAME??$document_root$fastcgi_script_name; ????include????????fastcgi_params; }

以上配置中fastcgi_pass 172.17.0.3:9000;需要與我們查看的php容器的ip一致。

完成以上配置并且確定容器啟動沒有問題,可以進行測試:

解析docker怎么搭建lnmp環境(php7.4 + nginx )

?訪問laravel可能出現目錄權限問題,以下是解決方式:

[root@localhost?docker]#?cd?/docker/www [root@localhost?www]#?chmod?-R?777??文件名

推薦學習:《PHP視頻教程

以上就是解析

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享