天天看點

WSL2配置docker和PHP

WSL2 配置docker和PHP

文章目錄

    • WSL2 配置docker和PHP
      • 1.了解PHP
      • 2.WSL更新為WSL2
      • 3.WSL2上搭建docker
        • ①安裝docker
        • ②基本使用
          • Ⅰ.開啟關閉docker
      • 4.docker搭建PHP環境
        • ①PHP環境準備
          • 拉取`nginx`
        • ②Hello PHP(CLI指令行方式)
          • Ⅰ.拉取PHP鏡像
          • Ⅱ.運作容器,端口映射
            • 檢視容器
            • 移除容器
          • Ⅲ.進入PHP互動模式
          • Ⅳ.利用Linux的vi編輯器
          • Ⅴ.浏覽器實作Hello PHP
            • 可以加入CSS樣式
        • ③Hello PHP(HTTP伺服器方式)
          • Ⅰ.拉取apache鏡像
          • Ⅱ.運作容器,端口映射
          • Ⅲ.建立index.php,通路localhost:8000

1.了解PHP

來自百度百科:

​ PHP(PHP: Hypertext Preprocessor)即“超文本預處理器”,是在伺服器端執行的腳本語言,尤其适用于Web開發并可嵌入HTML中

2.WSL更新為WSL2

參考知乎文章:https://zhuanlan.zhihu.com/p/356397851、https://zhuanlan.zhihu.com/p/356396288

​ 可以在Win10家庭中文版安裝Hyper-V,看上面文章✌️

3.WSL2上搭建docker

​ 何為docker,截圖來自知乎:
WSL2配置docker和PHP

​ 通過此文:https://zhuanlan.zhihu.com/p/23599229了解docker基礎知識

​ 還有此文:https://zhuanlan.zhihu.com/p/187505981

​ and this:Docker容器和鏡像的差別

①安裝docker

​ 具體步驟當時忘記記錄了…不過大體上和這篇部落格還有這篇上的原生linux安裝docker方式差不多

​ 噢噢想起來了,還看了這個:https://www.bilibili.com/video/BV1nt4y1k7Fy?from=search&seid=7494207446618727184

②基本使用

Ⅰ.開啟關閉docker

開啟docker,一開始網上查的是

systemctl start docker

WSL2配置docker和PHP

查詢原因 :部落格連結

下面兩張圖均來自上方那個連結
WSL2配置docker和PHP
WSL2配置docker和PHP
  • 故啟動為:
sudo service docker start
           
WSL2配置docker和PHP
  • 關閉為:
service docker stop
           
WSL2配置docker和PHP
  • 檢視狀态為:
service docker status
           
WSL2配置docker和PHP
WSL2配置docker和PHP
WSL2配置docker和PHP

4.docker搭建PHP環境

①PHP環境準備

sudo apt update
sudo apt install php
sudo apt install libapache2-mod-php
           
WSL2配置docker和PHP
WSL2配置docker和PHP
Apache是啥:
  • 來自百度百科:
    WSL2配置docker和PHP
  • B站上的簡介:

    https://www.bilibili.com/video/BV1zE411v7LW?from=search&seid=4016853372192845543&spm_id_from=333.337.0.0

拉取

nginx

參考教程:B站 Windows10開發環境搭建(3)在WSL2裡安裝Docker

(大概從六分半開始講

nginx

)

WSL2配置docker和PHP
WSL2配置docker和PHP
WSL2配置docker和PHP

②Hello PHP(CLI指令行方式)

Ⅰ.拉取PHP鏡像
​ 我拉了兩個

​ 一個是參考👉這個教程拉的

php:7.2.0-cli-alpine3.6

另一個是:

docker pull php:7.4-cli-alpine
           
Ⅱ.運作容器,端口映射

​ 參考:

​ docker的基本指令

​ Linux指令行選項單橫線“-”與雙橫線“–”的差別

docker run -it --name php-7.4-cli -p 80:80 php:7.4-cli-alpine sh
           

docker run

​ 👉關于docker run it 的 it

​ 👉docker run指令參數及使用(含例子)

WSL2配置docker和PHP

根據這些參數的解釋,那麼上面那個docker run指令的意思大概就是:

使用鏡像php:7.4-cli-alpine 以互動模式啟動一個容器,将容器的80端口映射到主機的80端口,并将容器命名為php-7.4-cli

至于上面的sh,是指linux的sh指令嗎?我還沒确定,不過我瞎查了一通…感覺和bash差不多

WSL2配置docker和PHP
WSL2配置docker和PHP
WSL2配置docker和PHP
​ 簡書文章:/bin/bash和/bin/sh的差別
WSL2配置docker和PHP
WSL2配置docker和PHP

檢視容器

參考文章:建立新Docker容器時出現“The container name “/xxx” is already in use by container xxxxxxxxxxx…”問題的解決辦法
​ 如果在容器沒有移除之前,使用兩次這種指令:

docker run -it --name php-7.4-cli -p 80:80 php:7.4-cli-alpine sh

,就會抛出already in use 的錯誤
  • 檢視鏡像
docker images
           
WSL2配置docker和PHP
  • 檢視容器
    • 檢視所有容器(包括停止狀态的)
      docker-ps-a
                 
      WSL2配置docker和PHP
      ​ exited是指非運作狀态
    • 檢視目前運作的容器

移除容器

​ 移除容器之前要先停止正在運作的容器,參考:You cannot remove a running container
docker stop 容器的ID
           
WSL2配置docker和PHP

此時再次使用docker ps -a就能看到對應的容器已經被移除

Ⅲ.進入PHP互動模式
WSL2配置docker和PHP
​ 啊突然發現之前好多次沒反應是因為…沒加分号
Ⅳ.利用Linux的vi編輯器
  • 先退出剛剛的php互動環境
  • 然後按照這個步驟來:
WSL2配置docker和PHP

​ 連結:Linux cd指令cd、 cd ~、cd /、cd…/、cd /home講解

​ Linux vi指令(vi編輯器)30分鐘入門教程

WSL2配置docker和PHP
WSL2配置docker和PHP
Ⅴ.浏覽器實作Hello PHP
  • 輸入指令
php -S 0.0.0.0:80
           
WSL2配置docker和PHP
  • 在浏覽器中通路虛拟機IP

    輸入

    localhost

    或者

    127.0.0.1

    或者

    127.0.0.1:80

WSL2配置docker和PHP
  • 或者重新打開一個WSL2視窗,使用curl指令

    ​ 不要把php -S那個中斷掉,否則通路不了

    WSL2配置docker和PHP
    ​ 關于

    curl

    指令
WSL2配置docker和PHP
​ 會有記錄:
WSL2配置docker和PHP

可以加入CSS樣式

vi index.php
           
  • 進入頁面
    WSL2配置docker和PHP
  • 進行修改,按

    i

    進入插入模式
    <?php echo "<h1 style='color:red'>hello PHP!</h1>";?>
               
  • esc

    ,輸入

    :wq

    回車退出并儲存
  • 重新開啟服務
php -S 0.0.0.0:80
           

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-kJpjbSA2-1630650398145)(https://cdn.jsdelivr.net/gh/xin007-kong/picture_new/img/20210903114838.png)]

  • 重新通路
WSL2配置docker和PHP
WSL2配置docker和PHP

③Hello PHP(HTTP伺服器方式)

​ 參考:Windows通路WSL裡的Apache服務
Ⅰ.拉取apache鏡像
docker pull php:7.4-apache
           
WSL2配置docker和PHP
Ⅱ.運作容器,端口映射
mkdir html #在虛拟機裡建立一個html檔案夾
cd html
docker run -d --name php-7.4-apache -p 8000:80 -v "$PWD":/var/www/html php:7.4-apache
           
WSL2配置docker和PHP
Ⅲ.建立index.php,通路localhost:8000

在沒有建立index.php之前就去通路,會出現這個:

WSL2配置docker和PHP
​ 我查了好多資料說去修改apache的配置檔案,但我在WSL2上一直找不到網上那些在Linux系統裡說的路徑,差點以為沒救了…
​ 然後建立了個php檔案…發現可以通路!
WSL2配置docker和PHP
WSL2配置docker和PHP
  • 這時我用docker stop +這個容器的ID,就可以停止,這時候通路

    localhost:8000

WSL2配置docker和PHP
  • 再使用docker start,就又可以通路了